是否可以在不立即呈现更改的情况下更新Firestore文档?

时间:2019-01-28 13:46:04

标签: angular typescript firebase google-cloud-firestore

我有一项功能,可以让用户上传某些内容。内容按投票顺序排序。目前,如果用户对某些内容进行投票,然后对这些内容的投票超过了其前面显示的内容,则内容的顺序将立即更改(因为我使用的是实时Firestore数据库)。

有什么办法可以防止这种情况的发生?我希望顺序保持不变,除非用户刷新页面。

2 个答案:

答案 0 :(得分:2)

  

有什么办法可以防止这种情况的发生?我想要的顺序保持不变,除非用户刷新页面。

是的,您可以通过两种方式防止这种情况。第一种方法是停止使用Firestore's realtime updates featureget the data only once。如您所见,如果仅使用get()调用,这是可能的。

根据关于CollectionReference的onSnapshot()函数正式文件:

  

为QuerySnapshot事件附加一个侦听器。听众可以通过调用时onSnapshot被调用时,返回的功能被取消。

第二种方法是继续使用实时更新功能,但是不再需要remove the listener

答案 1 :(得分:1)

听起来您正在使用Firestore's realtime mode,只要数据发生变化,它就会调用onSnapshot方法。从文档中:

db.collection("cities").doc("SF")
    .onSnapshot(function(doc) {
        console.log("Current data: ", doc.data());
    });

Cloud Firestore还具有一种简单reads the data once的方法。您可以使用它仅显示一次数据,或保留对何时读取数据的完全控制。从文档中:

docRef.get().then(function(doc) {
    if (doc.exists) {
        console.log("Document data:", doc.data());
    }
})