[英]How to correctly fetch data from firebase using where clauses and custom filters from firebase using flutter
我正在尝试使用
Stream<List<User>> getUsers(User user) {
return _firebaseFirestore
.collection('users')
// .where('interestedIn', isEqualTo: _selectInterest(user))
.snapshots()
.map((snap) {
return snap.docs.map((doc) => User.fromSnapshot(doc)).toList();
});
}
where子句中使用的过滤器如下
_selectInterest(User user) {
if (user.interestPreference == null) {
return ['HIRING', 'WORK'];
}
return user.interestPreference;
}
在 firebase 中,我将interestPreference 存储为一个数组,其中“HIRING”作为当前用户数据中的唯一元素,当我尝试在他们的interestedIn 中获取带有“HIRING”的用户时,我没有得到任何数据。 但是当我将 where 子句硬编码为
.where('interestedIn', isEqualTo: 'HIRING')
我得到了数据,谁能帮我解决我的困境?
从最后一个查询中,听起来你数据库中的interestedIn
字段是一个字符串值,比如interestedIn: "HIRING"
。
您当前的查询返回文档,其中interestedIn
是一个包含您指定的两个值的数组, interestedIn: ['HIRING', 'WORK']
如果您想退回所有感兴趣的文件是"HIRING"
或"WORK"
,您可以使用IN
条件:
.where('interestedIn', whereIn: ['HIRING', 'WORK'])
或者使用您的助手 function:
.where('interestedIn', whereIn: _selectInterest(user))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.