gpt4 book ai didi

java - 如何在 Firestore 中设置外键?

转载 作者:太空狗 更新时间:2023-10-29 16:26:25 25 4
gpt4 key购买 nike

举一个电子商务应用的例子,用户可以在其中上传尽可能多的商品,并且这些商品有类别和子类别。

如何在每个发布的项目中将 user_id 设置为外键以及用户集合中的 item_id 以查询特定用户发布的所有项目。

我们如何利用Firestore中的引用数据类型来设置外键?

还有其他设置外键的方法吗?

数据库结构:

Users/doc_id/name..

Categories/fashion/clothing/auto_doc_id/type:denims

最佳答案

in order to query all the items posted by a specific user.

为此,无需在每个发布的项目中将 user_id 设置为外键,也无需在用户集合中将 item_id 设置为外键。您只能向名为 postedBy 的项目对象添加一个新属性,该属性将作为值保存用户 ID。要仅显示特定用户的项目,您需要使用以下代码查询数据库:

FirebaseFirestore rootRef = FirebaseFirestore.getInstance();
CollectionReference itemsRef = rootRef.collection("items");
Query query = itemsRef.whereEqualTo("postedBy", user_id);

还有另一种方法涉及复制数据。对于 Firebase,这种技术没有问题。这是一种很常见的做法,它被命名为 denormalization,为此,我建议您观看此视频,Denormalization is normal with the Firebase Database .这适用于 Firebase 实时数据库,但该概念同样适用于 Cloud Firestore。

换句话说,您可以创建一个新集合,在其中存储由特定用户添加的所有项目。数据库结构应该是这样的:

Firestore-root
|
--- users (collecton)
|
--- userId (document)
|
--- userItems (collecton)
|
--- itemId (document)

复制数据时,需要牢记一件事。以与添加数据相同的方式,您需要维护它。换句话说,如果你想更新/删除一个项目,你需要在它存在的每个地方进行。

关于java - 如何在 Firestore 中设置外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50659543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com