[英]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.