gpt4 book ai didi

javascript - favoriteData 在 exports.favoriteTrigger.functions.firestore.document.onCreate 在 cloudFunction 不可迭代

转载 作者:行者123 更新时间:2023-11-30 09:11:35 24 4
gpt4 key购买 nike

我有两个收藏。一个是 jobs,另一个是 users

用户可以选择喜欢的类别名称。我存储在 User 集合中...在 job 中,我使用 categoryName 存储所有类别。

当向job 和这个作业插入新作业时,categoryName == user selected categoryName 我触发了对设备的推送通知。

只是要知道:我存储设备 token tokens 集合。

插入新作业时 Function log 中出现错误消息'

TypeError: favoriteData is not iterable at exports.favoriteTrigger.functions.firestore.document.onCreate (/srv/index.js:57:25) at cloudFunction (/srv/node_modules/firebase-functions/lib/cloud-functions.js:131:23) at /worker/worker.js:825:24 at at process._tickDomainCallback (internal/process/next_tick.js:229:7)

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;
})
}
});

最佳答案

DocumentSnapshot .data() 返回一个对象,您不能使用 for...of 对其进行迭代。根据您要执行的操作,您可以使用:

  • for...in
  • Object.keys()
  • Object.values()

在返回的对象上

关于javascript - favoriteData 在 exports.favoriteTrigger.functions.firestore.document.onCreate 在 cloudFunction 不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58393979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com