jha*_*ane 10 java android firebase google-cloud-firestore
例如,考虑一个电子商务应用程序,其中用户可以上传尽可能多的项目,并且这些项目具有类别和子类别。
如何在发布的每个项目中将 user_id 设置为外键,以及在用户集合中设置 item_id 以查询特定用户发布的所有项目。
我们如何利用Firestore 中的引用数据类型来设置外键?
还有其他设置外键的方法吗?
数据库结构:
Users/doc_id/name..
Categories/fashion/clothing/auto_doc_id/type:denims
Run Code Online (Sandbox Code Playgroud)
Ale*_*amo 10
为了查询特定用户发布的所有项目。
为此,无需在发布的每个项目中将 user_id 设置为外键,也无需在用户集合中将 item_id 设置为外键。您只能向命名的项目对象添加一个新属性,该属性postedBy将作为用户 ID 的值。要仅显示特定用户的项目,您需要使用以下代码查询数据库:
FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference itemsRef = rootRef.collection("items");
Query query = itemsRef.whereEqualTo("postedBy", user_id);
Run Code Online (Sandbox Code Playgroud)
还有另一种方法涉及复制数据。对于 Firebase,这种技术没有问题。这是一种非常普遍的做法,因此得名denormalization,我建议您观看此视频,Firebase 数据库的非规范化是正常的。这适用于 Firebase 实时数据库,但该概念同样适用于 Cloud Firestore。
换句话说,您可以创建一个新集合,您可以在其中存储特定用户添加的所有项目。数据库结构应如下所示:
Firestore-root
|
--- users (collecton)
|
--- userId (document)
|
--- userItems (collecton)
|
--- itemId (document)
Run Code Online (Sandbox Code Playgroud)
当您复制数据时,需要记住一件事。与添加数据的方式相同,您需要维护它。换句话说,如果你想更新/删除一个项目,你需要在它存在的每个地方都做。
| 归档时间: |
|
| 查看次数: |
13623 次 |
| 最近记录: |