因此,我正在尝试构建一个简单的购物解决方案,在该解决方案中我有一些产品,并且希望让人们购买并存储订单记录。由于我是NoSQL概念的新手,因此我无法真正解决这个问题。我不了解如何在不引入同步更新的情况下跟踪产品数量。我的想法是要有2个收藏夹,一个叫products
,另一个叫orders
。 product
文档将具有初始金额,orders
将具有订购金额。因此,我将一个减去另一个,然后以这种方式获得正确数量的产品。这里的问题是,这似乎是解决此问题的一种非常低效的方法,而我的直觉则认为有更好的更合适的方法。
答案 0 :(得分:1)
您的应用可能的数据库结构可能是:
Firestore-root
|
--- products (collection)
| |
| --- productId (document)
| |
| --- quantity: 30
| |
| --- price: 100
| |
| --- //Other product properties
|
--- orders (collection)
|
--- orderId (document)
|
--- products: ["productId", "productId", "productId"]
|
--- //Other order properties
如您所见,有两个不同的集合,一个用于产品,一个用于订单。请注意,products
文档中的orderId
属性的类型为array。这意味着您可以简单地添加/删除产品ID。在Android中,您可以简单地使用:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference ordersRef = rootRef.collection("orders");
DocumentReference docIdRef = ordersRef.document(orderId);
docIdRef.update("products", FieldValue.arrayUnion(productId));
要删除,只需使用:
docIdRef.update("products", FieldValue.arrayRemove(productId));
完成订单后,只需使用以下帖子中的答案即可获取所有产品ID,并减少每种产品的数量: