【发布时间】:2018-08-27 16:39:09
【问题描述】:
为了从 Firestore 中获取数据,我查询了一个文档并将该数据放入变量中。现在,我需要在代码的其他部分使用该变量。 当我使用该变量时,它没有得到任何数据。如何解决这些错误。
var d1;
var getdata = respond.get()
.then(doc =>{
if(!doc.exists){
console.log('No such document');
}else{
console.log('Document data:', doc.data());
d1 = doc.data();// In d1 I am not getting the data of that document
}
}).catch(err => {
console.log('Error getting documnet', err);
});
在 for 循环中,我使用的是 d1 变量。但它没有执行这些 for 循环
for(var k in d1){
var p = d1[k].PhoneNumber;
let rph = respond.where(receiverph ,"==", p)
.set({
Status : status
});
let payload = {
notification : {
title: "Message",
body: msg,
sound:"default",
}
};
console.log(payload);
return admin.messaging().sendToDevice(token,payload).then((response) =>{
console.log(token);
console.log("Successfully sen notification");
}).catch(function(error){
console.warn("Error sending notification",error);
});
}
});
在 d1 中的数据是
{ Invite2: { PhoneNumber: 917893659558, Amount: 33 },
Invite1: { PhoneNumber: 917799266509, Amount: 33 },
Invite3: { Amount: 33, PhoneNumber: 918639146409 }
}
【问题讨论】:
-
这就是你的全部代码吗?如果是这样,那是因为 for 循环实际上是在您将数据分配给 d1 之前执行的。因为 get 操作是异步的。
-
Yaa 这是我写的代码我没有得到 d1 中的数据
-
是的,因为 get 是异步的。尝试在 for 循环的正上方放置一条日志语句。您会在获取文档之前看到它的日志。
-
我检查了它,它打印出未定义的如何解决这个问题
标签: firebase firebase-realtime-database firebase-cloud-messaging google-cloud-functions google-cloud-firestore