如何从 Firestore 获取数组值?
How to get an array value from Firestore?
我将下图所示的数据结构存储在 Cloud Firestore 中。我已将公司记录保存在 Firestore 数据库中,我想检查我的域是否存在于公司的域数组中,如果是,那么我想要所有公司数据作为响应,但我不知道如何使用 Firestore 实现此目的。
我在这里标记了域。让我解释更多,
例如,如果我的域名是“abcinfo.in”,那么我想检查它是否已经存在于任何 partner_company 域中,并且在这里它与此 partner_company 相关联,因此它应该 return我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());
});
});
所以请建议我任何更好的方法来获得我想要的数据。
谢谢。
您可以执行以下操作:
var domaindata = db.collection('partner_company').where('company_domain', 'array-contains', _user.domain);
这将检查数组 company_domain
是否包含传递的域。
检查以下内容:
https://firebase.google.com/docs/firestore/query-data/queries#array_membership
Firebase 带有一个简洁的数组过滤功能:array-contains 和 array-contains-any。它们可以用作查询运算符。
使用 array-contains 过滤数组中必须完全匹配的值。
以下查询将解析您的测试文档:
db.collection('partner_company').where('company_domain', 'array-contains', ['abcinfo.in', 'newtest.com'];
array-contains-另一侧的任何过滤器至少有一个匹配值。
db.collection('partner_company').where('company_domain', 'array-contains-any', ['definfo.in', 'newtest.com'];
详细了解 firebase 中的数组成员here
我将下图所示的数据结构存储在 Cloud Firestore 中。我已将公司记录保存在 Firestore 数据库中,我想检查我的域是否存在于公司的域数组中,如果是,那么我想要所有公司数据作为响应,但我不知道如何使用 Firestore 实现此目的。
我在这里标记了域。让我解释更多, 例如,如果我的域名是“abcinfo.in”,那么我想检查它是否已经存在于任何 partner_company 域中,并且在这里它与此 partner_company 相关联,因此它应该 return我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());
});
});
所以请建议我任何更好的方法来获得我想要的数据。 谢谢。
您可以执行以下操作:
var domaindata = db.collection('partner_company').where('company_domain', 'array-contains', _user.domain);
这将检查数组 company_domain
是否包含传递的域。
检查以下内容:
https://firebase.google.com/docs/firestore/query-data/queries#array_membership
Firebase 带有一个简洁的数组过滤功能:array-contains 和 array-contains-any。它们可以用作查询运算符。
使用 array-contains 过滤数组中必须完全匹配的值。 以下查询将解析您的测试文档:
db.collection('partner_company').where('company_domain', 'array-contains', ['abcinfo.in', 'newtest.com'];
array-contains-另一侧的任何过滤器至少有一个匹配值。
db.collection('partner_company').where('company_domain', 'array-contains-any', ['definfo.in', 'newtest.com'];
详细了解 firebase 中的数组成员here