我是否可以在不立即呈现更改的情况下更新Firestore文档?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是否可以在不立即呈现更改的情况下更新Firestore文档?相关的知识,希望对你有一定的参考价值。
我有一个功能,可以让用户赞成某些内容。内容按upvotes的顺序排序。目前,如果用户赞成某些内容,然后其内容比之前显示的内容更多,则内容的顺序将立即发生变化(因为我使用的是实时Firestore数据库)。
有没有办法阻止这种情况发生?除非用户刷新页面,否则我希望订单保持不变。
听起来你正在使用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()); } })
有没有办法阻止这种情况发生?除非用户刷新页面,否则我希望订单保持不变。
是的,您可以通过两种方式防止这种情况。第一种方法是停止使用Firestore's realtime updates feature和get the data only once。如您所见,如果您只是使用get()调用,这可能是可能的。
根据有关CollectionReference的onSnapshot()函数的官方文档:
为QuerySnapshot事件附加侦听器。可以通过调用onSnapshot被调用时返回的函数来取消侦听器。
所以第二种方法是继续使用实时更新功能,但不再需要remove the listener了一次。
以上是关于我是否可以在不立即呈现更改的情况下更新Firestore文档?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在不刷新整个页面的情况下刷新包含的 Django 模板?
是否可以在不替换的情况下以编程方式修改/更新 plist 文件?