javascript - Firebase 数组包含 - 搜索值而不是键
问题描述
如何查询具有数字键集的数组中的值?
例如,此查询不起作用,因为我相信它正在查看索引而不是值:
var db = firebase.firestore();
var users = db.collection("Users");
var currentUser = firebase.auth().currentUser;
var result = users.where('liked', 'array-contains', currentUser.uid);
if (result.length > 0) {
return 'You have a match!';
} else {
return 'No matches';
}
解决方案
正如 Stratubas 评论的那样,问题出在以下代码中:
var result = users.where('liked', 'array-contains', currentUser.uid);
此代码构造一个查询,但尚未执行该查询。对象result
也是如此。要执行查询并从服务器获取结果,请调用查询,然后返回一个. 一旦 promise 结果,您可以在object中处理结果。Query
get()
Promise<QuerySnapshot>
QuerySnapshot
var query = users.where('liked', 'array-contains', currentUser.uid);
query.get().then(function(querySnapshot) {
if (querySnapshot.size > 0) {
console.log('You have a match!');
} else {
console.log('No matches');
}
});
在更现代的 JavaScript 中,上面的内容也可以写成:
let query = users.where('liked', 'array-contains', currentUser.uid);
let querySnapshot = await query.get()
if (querySnapshot.size > 0) {
console.log('You have a match!');
} else {
console.log('No matches');
}
推荐阅读
- python - pyparsing 通用 python 函数 args 和 kwargs
- swift - 快速创建 URLSession 冻结应用程序
- javascript - 如何在 Outloo 发送插件中区分会议取消和会议创建
- swift - 更新结构数组中的结构数组
- javascript - AG-Grid React,无法在数据更改时更新自定义单元格渲染器。函数组件的行为与类组件不同
- python - 尝试登录数据库时出现 sqlalchemy.exc.OperationalError
- kdb - 在非默认(当前)命名空间中定义视图
- c++ - 为什么有两种类型的缓冲区?
- c# - 此 XAML 代码将 XML 元素绑定到 DataGrid 的 C# 等效项是什么?
- python - 在 sqlalchemy DBAPI 上运行时,相同的 sql 语句会给出不同的结果