gpt4 book ai didi

firebase - 如何基于数组中的多个值过滤快照流?

转载 作者:行者123 更新时间:2023-12-03 03:32:21 24 4
gpt4 key购买 nike

我在这场 Storm 和数据库管理中是新手。
在我的代码中,网上论坛集合中有很多网上论坛文件
现在我要做的是,向用户集合中的某个人展示他所连接的特定组。
这是组uid的外观:

这是用户文档的外观:

我用来创建组文档的代码是这样
创建文档后,我将新文档的uid添加到用户的数组中,称为groups。

Future createNewGroupData(String groupName) async {
String _userID = await getUID();
return await groupCollection.add({
'creatorUID': _userID,
'groupName': groupName,
'teachers': [_userID],
}).then((ref) => {
userCollection.document(_userID).updateData({'groups': FieldValue.arrayUnion([ref.documentID])})
});
这是我为每个用户创建文档的结构,
Future updateUserData(int avatarID, String firstName, String lastName, String status, List groups, String school) async {
return await userCollection.document(uid).setData({
'avatarID': avatarID.round(),
'firstName': firstName,
'lastName': lastName,
'status': status,
'groups': groups,
'school': school,
});
}
我的实现方式是将用户添加到组中。该组的uid附加在该用户文档下的数组中。
现在,我要执行的操作是获取该组快照的流,仅该用户数组中存在uid。我真的找不到任何实现该方法的方法。

最佳答案

如果我理解正确,则希望加载其文档ID与在用户的groups字段中找到的文档ID相匹配的组文档。在这种情况下,您正在寻找 FieldPath.documentId in query的组合。
就像是:

Firestore.instance.collection('groups').where(FieldPath.documentId, whereIn: listOfUids)
query limitations上的Firestore文档中所示,这仅适用于最多10个文档ID:

Cloud Firestore provides limited support for logical OR queries. The in and array-contains-any operators support a logical OR of up to 10 equality (==) or array-contains conditions on a single field. For other cases, create a separate query for each OR condition and merge the query results in your app.


如果您有更多的文档ID,则需要针对每个(最多)10个触发单独的查询。
另请参阅:
  • Flutter Firebase get documents by array of IDs
  • 关于firebase - 如何基于数组中的多个值过滤快照流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63216823/

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