如何在不查询所有集合的情况下检查用户内部是否存在字段



我遍历所有用户节点,我只想向文档中具有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();

只是为了让用户在文档中拥有商店价值?

我想用这种方式保存读取

if(doc.data().shop !== null)

如果商店是未定义的,那么您的代码就不会发现问题。

你可以做一些类似的事情

if(typeof doc.data().shop === 'string') // or whatever the type is, like boolean or number.

那你就可以肯定那家店有价值了。

最新更新