javascript - 检查我的用户节点中是否存在特定值
问题描述
我遍历所有用户节点,我只想向在文档中将 shop 作为值的用户发送通知,如果文档中有没有此属性的用户我不想向他们发送通知
exports.rememberToOpenStore = functions.pubsub.schedule('30 09 * * *').onRun(async (context) => {
var db = admin.firestore();
let snap = await db.collection('user').get();
return snap.forEach((doc) => {
if(doc.data().shop !== null){
const deviceToken = doc.data().deviceToken
const payload = {
notification: {
title: "Good morning ! ",
body: "Remember to open your store."
}
}
return admin.messaging().sendToDevice(deviceToken,payload)
}
return null;
});
});
我想知道这是否
if(doc.data().shop !== null)
会知道哪个用户有或没有那个属性
有没有更好的方法来使用类似的 where 查询来做到这一点
let snap = await db.collection('user').where("shop" "!=", null).get();
只是获得在文档中具有该商店价值的用户?
谢谢 !
解决方案
我不确定shop
可能具有的值,但根据文档,您可以orderBy
使用一个字段,如果它不存在,它将不会被返回。因此,按字段查询 Firestore 排序shop
将不会返回不包含该字段的文档。
查询应该是这样的:
db.collection('user').orderBy('shop').get()
另一种选择是为所有文档创建字段并为其分配一个null
值。这样,您还可以检索具有该字段的文档。
在这种情况下,查询应该是这样的:
db.collection('user'),where('shop', '!=', null).get()
推荐阅读
- node.js - 即使函数已被调用,expect(jest.fn()).toHaveBeenCalled() 也会失败
- javascript - 如何防止用户在复制粘贴操作时立即将带有无效字符的文本复制粘贴到输入文本字段中?
- python - 我想知道如何在 Django-Admin 中隐藏模型的创建和修改选项
- html - 如何在不水平扩展的情况下在页面边缘显示一半图像?
- python - 如何在函数中创建参数,使其成为可选参数并拥有无限数量的参数
- unity3d - 无法在谷歌云平台注册应用
- typescript - 限制泛型类型
针对特定类型 - python - 将日期描述解析为日期本身
- python - Discord.py:清除命令引发 CommandError
- javascript - 反应钩子打字稿如何更新状态