繁体   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