Javascript 颤振通知/分析错误:意外的令牌管理

Javascript 颤振通知/分析错误:意外的令牌管理,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,当一个新项目从他订阅的其他用户上传时,我想给一个用户发消息 我的方法: 首先,我检查是否上传了一个新项目。 如果这是真的,我想从上传项目的用户那里获取uid。 然后我转到该用户的文件(User/{uid来自上传该项的用户}),其中订阅他的帐户位于一个带有uid的字符串列表中。 对于此列表中的每个uid,我希望从具有此特定uid的用户处获取devicetoken(user/{uid from List}/devicetoken),并将每个devicetoken添加到字符串列表中。 有了这个设备,我

当一个新项目从他订阅的其他用户上传时,我想给一个用户发消息

我的方法:

首先,我检查是否上传了一个新项目。 如果这是真的,我想从上传项目的用户那里获取uid。 然后我转到该用户的文件(User/{uid来自上传该项的用户}),其中订阅他的帐户位于一个带有uid的字符串列表中。 对于此列表中的每个uid,我希望从具有此特定uid的用户处获取devicetoken(user/{uid from List}/devicetoken),并将每个devicetoken添加到字符串列表中。 有了这个设备,我终于想向列表中的每个设备发送一条消息。 但是我对js和后端开发没有那么丰富的经验

我的代码是按照上面描述的方式编写的,但是当我尝试将其部署到firebase函数时,我得到了一些警告

部署到firebase时出现警告:

24:17警告避免嵌套承诺承诺/不嵌套

24:17警告避免嵌套承诺承诺/不嵌套

30:26警告不要在循环中生成函数无循环函数

46:20警告避免嵌套承诺承诺/不嵌套

46:20警告避免嵌套承诺承诺/不嵌套

你们中有人能帮我解决我的问题吗

const functions=require('firebase-functions');
const admin=require('firebase-admin');
admin.initalizeApp(functions.config().firebase);
var msgData;
//收听新的上传
exports.recipeTrigger=functions.firestore.document('item/{itemId}')。onCreate(异步(快照)=>{
msgData=snapshot.data();
//从上载项目的用户处获取数据
等待admin.firestore().collection('User/'+msgData.uid).get()。然后((快照)=>{
var用户=[];
var标记=[];
if(snapshot.empty){
console.log(“无用户”);
返回null;
}否则{
//获取每个用户的uid
users=snapshots.data().subscribers;
for(用户中的用户){
//用户应该是uid
admin.firestore().collection('User/'+User.get()。然后((snap)=>{
for(snap.docs的var标记){
//将devicetoken添加到列表中避免嵌套承诺
添加(token.data().token);
}
归还代币;
}).catch(错误=>{print(错误)})
返回用户;
}
//指定消息内容
var有效载荷={
“通知”:{
“title”:“From”+snapshots.data().displayName,
“身体”:“我上传了一份新食谱”,
“声音”:“默认值”,
},
“数据”:{
“senderName”:snapshots.data().displayName,
“消息”:snapshots.data().displayName+“上传了新配方”,
}
}
//向devicetokens发送消息
返回admin.messaging().sendToDevice(令牌、负载)。然后((响应)=>{
log(“通知发送”);
返回响应;
}).catch((er)=>{
控制台日志(er);
});
}
}).catch(错误=>{print(错误)});

})
错误消息告诉您使用
firestore
令牌查看第23行:

await firestore().document('User/' + user).get().then((snap) => {

您可能是想说
admin.firestore().doc(…)

这里有很多不同的javascript lint错误。你应该单独追踪他们。如果您不知道每个错误的含义,您应该使用错误消息进行web搜索以了解更多信息。我修复了所有错误,但现在出现了一个新错误:我只是删除了等待并添加了一些其他更改,但仍然收到一系列警告,您知道为什么@DougStevenson吗?如果您有新问题,这应该作为一个新的问题发布,同时详细说明哪些问题没有按您预期的方式工作。