gil*_*rip 1 flutter google-cloud-firestore
我有一个集合(组),其中字段包含有关加入该组的用户的信息,
我想向用户显示他加入的所有组。
List groupList = [];
void getAvailableGroups() async {
await _fireStore
.collection('Groups')
.get()
.then((value) {
groupList = value.docs;
});
}
Run Code Online (Sandbox Code Playgroud)

我尝试从地图转换为数组,但它给了我地图内的数组,这是我的代码
Future createGroup() async{
GroupRoomModel newGroup = GroupRoomModel(
groupName: groupName.text,
groupRoomId: uuid.v1(),
owner: userModel.uid,
membersList: controller.membersList,
membersListUid: controller.membersListUid.cast() // like this
);
}
...
Run Code Online (Sandbox Code Playgroud)
我也尝试过
Future createGroupFunc() async{
GroupRoomModel newGroup = GroupRoomModel(
groupName: groupName.text,
groupRoomId: uuid.v1(),
owner: userModel.uid,
membersList: controller.membersList,
membersListUid: controller.membersListUid.map((e)=> e).toList()
);
...
Run Code Online (Sandbox Code Playgroud)
尝试基于如下内容进行过滤可能很诱人:
_fireStore
.collection('Groups')
.where('membersList', arrayContains: 'test@email.com')
Run Code Online (Sandbox Code Playgroud)
但这是行不通的,因为只有当它与数组中的完整arrayContains项目匹配时才能找到匹配项。您不能用于仅匹配项目的子集。arrayContains
常见的解决方案是向文档中添加一个额外的数组字段,其中仅包含您希望能够查询的属性。例如:
memberEmails: ['test@email.com', 'test@example.com']
Run Code Online (Sandbox Code Playgroud)
有了这样的附加字段,您可以使用以下方式进行查询:
_fireStore
.collection('Groups')
.where('memberEmails', arrayContains: 'test@email.com')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2197 次 |
| 最近记录: |