首页 > 解决方案 > 如何在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> 
  }
}

有没有一种方法可以让我收到待处理商品的订单状态?

这是数据库的图像Firestore 数据库映像

标签: firebasereact-nativegoogle-cloud-firestore

解决方案


最好将其设为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());
});

推荐阅读