javascript - 如何从 Firestore 获取数组值?
问题描述
我将下图所示的数据结构存储在 Cloud Firestore 中。我已经在 Firestore 数据库中保存了公司记录,我想检查我的域是否存在于公司的域数组中,如果是,那么我想要所有公司数据作为响应,但我不知道如何使用 Firestore 实现这一点。
在这里,我标记了域。让我解释一下,例如,如果我的域名是“abcinfo.in”,那么我想检查它是否已经存在于任何 partner_company 域中,并且在这里它与这个 partner_company 链接,所以它应该返回给我 partner_company 的所有数据. 而已。
我已经尝试过下面的代码,但是当有单个值时它会有所帮助,但是在这里我需要从数组中检查
var domaindata = db.collection('partner_company').where('company_domain', '==', _user.domain);
domaindata.get().then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
console.log(doc.id, ' => ', doc.data());
});
});
所以请建议我任何更好的方法来获得我想要的数据。谢谢你。
解决方案
Firebase 带有一个用于数组过滤的简洁功能:array-contains和array-contains-any。它们可以用作查询运算符。
使用 array-contains 过滤数组中必须完美匹配的值。以下查询将解析您的测试文档:
db.collection('partner_company').where('company_domain', 'array-contains', ['abcinfo.in', 'newtest.com'];
array-contains-any 在另一侧过滤至少一个匹配值。
db.collection('partner_company').where('company_domain', 'array-contains-any', ['definfo.in', 'newtest.com'];
在此处阅读有关 Firebase 中数组成员资格的更多信息
推荐阅读
- angular - 如何截断Angular中的文本?
- bash - 打开终端时打印最后完成的作业(Ubuntu 16.04)
- javascript - 如何在本机反应中从数组中删除重复项
- prolog - 我们如何在 prolog 中表示复杂的整数加法和乘法?
- db2 - 当 Spring Batch 插入 BATCH_JOB_EXECUTION 时出现 BadSqlGrammarException
- javascript - 使用 React Native 解析 RSS 提要时,如何获取描述标签内的描述和 imageUrl?
- flutter - 在颤动中提交后如何获取复选框的自动递增和递减值
- visual-studio - 每次构建后将所有 TypeScript 文件复制到输出目录
- android - 如何在android中为矢量图像添加渐变颜色并在底部导航视图中使用
- c - #C #string #array 如何用 C 编程这个项目?