Firestore实时监听多个文档的实时监听器

问题描述

我想知道Firestore的实时侦听器是否支持async await而不是Promise?

文档建议:

var unsubscribe = db.collection("cities").where("state","==","CA").onSnapshot(function(querySnapshot) {
    var cities = [];
    querySnapshot.forEach(function(doc) {
       cities.push(doc.data().name);
    });
    console.log("Current cities in CA: ",cities.join(","));
});
unsubscribe();

我可以使用async await编写上述实时侦听器吗?我尝试了以下操作,但侦听器不再起作用。另外,将无法再分离侦听器。

var querySnapshot = db.collection("cities").where("state","CA").onSnapshot
var cities = [];
querySnapshot.forEach(function(doc) {
   cities.push(doc.data().name);
});
console.log("Current cities in CA: ","));

我该如何使用async await编写它,并且还可以使用分离器?

解决方法

异步/等待(与promises一起使用)与侦听器一起使用没有意义。许诺表示以最终值或错误结尾的工作单元。侦听器是一个持续的过程,直到使用取消订阅功能将其删除后,该过程才会结束。它们是根本不同的东西。

如果您要进行一次查询以保证可以等待,则应使用get()而不是documentation中所述的onSnapshot()。当结果随时间变化时,如果要更新查询,请仅使用侦听器。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...