Javascript favoriteData在exports.favoriteTrigger.functions.firestore.document.onCreate在cloudFunction上不可编辑

Javascript favoriteData在exports.favoriteTrigger.functions.firestore.document.onCreate在cloudFunction上不可编辑,javascript,firebase,google-cloud-platform,google-cloud-functions,Javascript,Firebase,Google Cloud Platform,Google Cloud Functions,我有两个收藏。一个是作业,另一个是用户 用户可以选择喜爱的类别名称。我存储在用户集合上。。。在job内部,我使用categoryName存储所有类别 将新作业插入作业和此作业categoryName==用户选择的categoryName时,我触发了对设备的推送通知 只需知道:我存储设备令牌令牌集合 插入新作业时,功能日志上出现错误消息 TypeError:favoriteData不可编辑 位于exports.favoriteTrigger.functions.firestore.document

我有两个收藏。一个是
作业
,另一个是
用户

用户可以选择喜爱的类别名称。我存储在
用户
集合上。。。在
job
内部,我使用
categoryName
存储所有类别

将新作业插入
作业
和此作业
categoryName==用户选择的categoryName
时,我触发了对设备的推送通知

只需知道:我存储设备令牌
令牌
集合

插入新作业时,
功能日志上出现错误消息

TypeError:favoriteData不可编辑 位于exports.favoriteTrigger.functions.firestore.document.onCreate(/srv/index.js:57:25) 在cloudFunction(/srv/node_modules/firebase functions/lib/cloud functions.js:131:23) at/worker/worker.js:825:24 在 在进程中。_tickDomainCallback(internal/process/next_tick.js:229:7)

exports.favoriteTrigger=functions.firestore.document('jobs/{any}'))
.onCreate((快照、上下文)=>{
变量categoryName=[];
var等价分类=[];
if(snapshot.empty){
log('作业集合中没有作业');
返回null;
}否则{
favoriteData=snapshot.data();
for(favoriteData的var jobC){//57:25行代码。这里出现错误
categoryName.push(jobC.data().categoryName);
}
admin.firestore().collection('users').get().then((快照)=>{
var userCategory=[];
if(snapshot.empty){
log('用户尚未选择收藏夹类别');
返回null;
}否则{
for(snapshot.docs的var jobCategory){
userCategory.push(jobCategory.data().jobCategory);
}
var i;
var j;
对于(i=0;i{
console.log('Error last'+Error);
});
admin.firestore().collection('tokens').get().then((快照)=>{
var标记=[];
if(snapshot.empty){
console.log(“无设备”);
返回null;
}否则{
for(snapshot.docs的var标记){
tokens.push(token.data().tokenId);
}
var有效载荷={
“通知”:{
“头衔”:“你有了新工作”,
“正文”:“要约”,
“声音”:“默认值”
},
“数据”:{
“sendername”:msgData.applyJobDate,
“消息”:msgData.jobId
}
};
if(equalCategory.length!==0){
返回admin.messaging().sendToDevice(令牌、负载)。然后((响应)=>{
log('push theme all');
返回null;
}).catch((错误)=>{
console.log(错误);
返回null;
})
}
}
返回null;
}).catch((错误)=>{
console.log(错误);
返回null;
})
}
});
.data()
返回一个对象,您不能使用
对其进行迭代。根据您正在尝试的操作,您可以使用:

  • 用于……在
  • Object.keys()
  • Object.values()
在返回的对象上

.data()
返回一个对象,您不能使用
对其进行迭代。根据您正在尝试的操作,您可以使用:

  • 用于……在
  • Object.keys()
  • Object.values()

在返回的对象上

它是否从快照上的
.val()
更改?我现在尝试<代码>类型错误:snapshot.val(…)不是函数或其返回值在exports.favoriteTrigger.functions.firestore.document.onCreate
Ah我看到-
.val()
用于firebase数据库我修改了我的问题描述,请检查。你明白了吗?快照上的
.val()
变了吗?我现在试试<代码>类型错误:snapshot.val(…)不是函数或其返回值在exports.favoriteTrigger.functions.firestore.document.onCreateAh我看到-
.val()
用于firebase数据库我修改了我的问题描述,请检查。您理解吗?是否可以在同一个文件上触发多个触发器?
const functions=require('firebase-functions');const admin=require('firebase-admin');admin.initializeApp(functions.config().firebase);var msgData;var数据;exports.categoryTrigger=functions.firestore.document('jobs/{any}').onCreate((快照,上下文)=>{..
**返回设备通知,以及**
exports.favoriteTrigger=functions.firestore.document('jobs/{any}').onCreate((快照,上下文)=>{
**返回设备通知**是否可以在同一文件上触发多个触发器?
const functions=require('firebase-functions');const admin=require('firebase-admin');admin.initializeApp(functions.config().firebase);var msgData;var favoriteData;exports.categoryTrigger=functions.firestore.document('jobs/{any}).onCreate((快照,上下文)=>{..
**返回设备通知,也**
exports.favoriteTrigger=functions.firestore.document('jobs/{any}')。onCreate((快照,上下文)=>{
**返回设备通知**
exports.favoriteTrigger = functions.firestore.document('jobs/{any}')
.onCreate((snapshot,context)=>{
    var categoryName = [];
    var equalCategory = [];
    if(snapshot.empty){
        console.log('No Jobs in Jobs Collection');
        return null;
    }else{
        favoriteData = snapshot.data();
        for(var jobC of favoriteData){ //57:25 line code. error is coming here
            categoryName.push(jobC.data().categoryName);
        }
    admin.firestore().collection('users').get().then((snapshot)=>{
        var userCategory = [];
        if(snapshot.empty){
            console.log('User not select favorite category yet');
            return null;
        }else{
            for(var jobCategory of snapshot.docs){
                userCategory.push(jobCategory.data().jobCategory);
            }
            var i;
            var j;
            for(i = 0; i < userCategory.length; i++){
                for(j = 0; j < categoryName.length; j++){
                    if(userCategory[i] === categoryName[j]){
                        return equalCategory.push(userCategory[i]);
                    }
                }
            }
            return null;
        }
    }).catch((error)=>{
        console.log('Error last ' + error);
    });
        admin.firestore().collection('tokens').get().then((snapshot)=>{
            var tokens = [];
            if(snapshot.empty){
                console.log('No devices');
                return null;
            }else{
                for(var token of snapshot.docs){
                    tokens.push(token.data().tokenId);
                }

                var payload = {
                    "notification":{
                        "title":"You have new job ",
                        "body":"Offer",
                        "sound":"default"
                    },
                    "data":{
                        "sendername":msgData.applyJobDate,
                        "message":msgData.jobId
                    }
                };
                if(equalCategory.length !== 0){
                    return admin.messaging().sendToDevice(tokens,payload).then((response)=>{
                        console.log('pushed them all');
                        return null;
                    }).catch((error)=> {
                        console.log(error);
                        return null;
                    })
                }
            }
            return null;
        }).catch((error)=>{
            console.log(error);
            return null;
        })
}
});