我有一个从Firestore获取数据的函数,但始终返回未定义。我以前使用过.get()方法,但是我希望在数据库获取一些新数据时自动更新我的数据。
我知道.onSnapshot()不会返回承诺,因此使用异步不是一种选择。
getdata = (dbRef) => {
dbRef.onSnapshot(snapshot => {
console.log(snapshot);
return snapshot;
});
}
日志在控制台中显示快照,但是当我调用该函数时,它返回未定义的
答案 0 :(得分:1)
您的问题不是很清楚。如果您尝试获取实时更新,请使用本文档https://firebase.google.com/docs/firestore/query-data/listen
中的该模型db.collection("cities").doc("SF")
.onSnapshot(function(doc) {
console.log("Current data: ", doc.data());
});
如果您想获取一次数据,请使用本文档https://firebase.google.com/docs/firestore/query-data/get-data
中的该模型docRef.get().then(function(doc) {
if (doc.exists) {
console.log("Document data:", doc.data());
} else {
// doc.data() will be undefined in this case
console.log("No such document!");
}
我认为文档对此非常清楚。
顺便说一句,我确定onSnapshot实时更新也是异步的。如果要获取实时更新,则无法使用它。对于功能,请使用一次数据模型。这是实时更新的很好的例子
答案 1 :(得分:0)
您可以阅读此链接"listen realtime updates"
上的教程db.collection("cities")
.onSnapshot(function(querySnapshot) {
let cities = [];
querySnapshot.forEach(function(doc) {
cities.push(doc.data());
});
});