簡體   English   中英

如何使用 where 子句從 firebase 正確獲取數據,並使用 flutter 從 firebase 中正確獲取數據

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM