Firestore onSnapshot返回未定义

时间:2019-05-02 10:03:08

标签: javascript firebase react-native google-cloud-firestore

我有一个从Firestore获取数据的函数,但始终返回未定义。我以前使用过.get()方法,但是我希望在数据库获取一些新数据时自动更新我的数据。

我知道.onSnapshot()不会返回承诺,因此使用异步不是一种选择。

getdata = (dbRef) => {
                dbRef.onSnapshot(snapshot => {
            console.log(snapshot);
            return snapshot;
        });
    }

日志在控制台中显示快照,但是当我调用该函数时,它返回未定义的

2 个答案:

答案 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实时更新也是异步的。如果要获取实时更新,则无法使用它。对于功能,请使用一次数据模型。这是实时更新的很好的例子

http://jsfiddle.net/katowulf/cw7dgs8a/

答案 1 :(得分:0)

您可以阅读此链接"listen realtime updates"

上的教程
db.collection("cities")
    .onSnapshot(function(querySnapshot) {
        let cities = [];
        querySnapshot.forEach(function(doc) {
            cities.push(doc.data());
        });      
    });