Javascript 如何在不查询所有集合的情况下检查“我的用户”中是否存在字段
我迭代了所有的用户节点,我只想向文档中有shop作为值的用户发送通知,如果文档中有没有这个属性的用户,我不想向他们发送通知Javascript 如何在不查询所有集合的情况下检查“我的用户”中是否存在字段,javascript,android,firebase,google-cloud-firestore,google-cloud-functions,Javascript,Android,Firebase,Google Cloud Firestore,Google Cloud Functions,我迭代了所有的用户节点,我只想向文档中有shop作为值的用户发送通知,如果文档中有没有这个属性的用户,我不想向他们发送通知 exports.rememberToOpenStore = functions.pubsub.schedule('30 09 * * *').onRun(async (context) => { var db = admin.firestore(); let snap = await db.collection('user').get();
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 ! if(doc.data().shop !== null)
If shop is undefined then your code won't catch the issue.
You can do something like
if(typeof doc.data().shop === 'string') // or whatever the type is, like boolean or number.
exports.rememberToOpenStore=functions.pubsub.schedule('30 09***').onRun(异步(上下文)=>{
var db=admin.firestore();
让snap=await db.collection('user').get();
返回snap.forEach((doc)=>{
if(doc.data().shop!==null){
const deviceToken=doc.data().deviceToken
常数有效载荷={
通知:{
标题:“早上好!if(doc.data().shop!==null)
如果shop未定义,那么您的代码将无法捕获问题
你可以这样做
然后,您将确保shop有一个值。Firestore不提供任何不平等性或字段存在性检查,因此,如果您只是查找存在的字段,则无法避免阅读每个文档。有效执行此操作的唯一方法是确保每个文档都有一个可以筛选的字段值。简单的布尔值可能会布莱在这里工作。你的意思是,像hasShop和过滤器,适用于那些在哪里有商店的用户(“hasShops”,真的)?听起来不错,你可以试试。想把这个作为一个答案,我会投票,谢谢tipI已经把这个问题标记为一个副本。非常感谢你的回答,但我已经尝试过了,它对我不起作用。不客气!使用typeof检查属性是否存在非常好。但是说商店应该是一个Boolean,那么你只需要做shop===真的。