我有一项功能,可以让用户上传某些内容。内容按投票顺序排序。目前,如果用户对某些内容进行投票,然后对这些内容的投票超过了其前面显示的内容,则内容的顺序将立即更改(因为我使用的是实时Firestore数据库)。
有什么办法可以防止这种情况的发生?我希望顺序保持不变,除非用户刷新页面。
答案 0 :(得分:2)
有什么办法可以防止这种情况的发生?我想要的顺序保持不变,除非用户刷新页面。
是的,您可以通过两种方式防止这种情况。第一种方法是停止使用Firestore's realtime updates feature和get 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()); } })