firebase - 如何在firestore中为订单构建数据?
问题描述
我正在制作一个送餐应用程序。在查询订单 ID中的订单状态数据时,我遇到了障碍。
这是我的数据库设计:
Users (collections)
------> user id (documents)
----------> orders(object)
// Orders is a nested object. You can find an image of this down below.
orders{
"order_id":{
created_at: <time>
order_items: <array>
status: <string>
}
}
有没有一种方法可以让我收到待处理商品的订单状态?
解决方案
最好将其设为orders
子集合(或单独的根级别集合),以便您可以查询具有特定状态的订单。数据库结构如下:
users -> {userId} -> orders -> {orderId}
(col) (doc) (col) (doc)
否则,在当前结构下,您将不得不使用 Javascript 获取完整的文档和排序顺序。另请注意,单个文档有1 MB 的限制,因此您限制了用户可以拥有的订单数量。
将每个订单移动到“订单”子集合中的文档后,您可以像这样查询挂单:
const q = query(collection(db, "users", userId, "orders"), where("status", "==", pending));
const querySnapshot = await getDocs(q);
querySnapshot.forEach((doc) => {
console.log(doc.id, " => ", doc.data());
});
推荐阅读
- tensorflow - 在 TF2 中修剪 ML 模型
- oracle - ROW_NUMBER 的性能
- reactjs - url重定向成功,但在react js typescript上使用重定向时未调用组件
- c++ - 字符串或整数转换为 ASCII
- botframework - 如何在不使用 ngrok 的情况下创建安全隧道来公开我的节点、js 应用程序
- flatpak - Install extra packages in Flatpak sandbox
- javascript - 在 Repl 中使用带有 'require()' 的 RxJS/Observables
- c++ - 如何将字符数组更改为整数数组?
- python - 尝试安装pyaudio时,无论我在互联网上尝试什么,我的mac都不会
- amazon-web-services - 如何在 AWS 中查找附加到默认安全组的所有服务?