类型'Observable <QuerySnapshot <DocumentData >>上不存在属性'then'

时间:2020-05-03 11:12:12

标签: javascript angular firebase google-cloud-firestore

db.collection("cities").get()
  .then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
      // doc.data() is never undefined for query doc snapshots
      console.log(doc.id, " => ", doc.data());
  });

我正在尝试读取一个集合的多个文档,但随后出现错误。 请帮我解决这个问题。

1 个答案:

答案 0 :(得分:3)

如果您想将承诺视为承诺,则可以将其转换为承诺。一旦get()仅产生一次发射,这不是黑客。但是Firebase希望您处理来自get()的流。无论如何,要将其转换为承诺:

db.collection("cities").get().toPromise()
  .then((querySnapshot: QuerySnapshot<DocumentData>) => {
    querySnapshot.forEach((doc: any) => {
      // doc.data() is never undefined for query doc snapshots
      console.log(doc.id, " => ", doc.data());
  });

如果您决定处理get()发出的流,则Firebase API希望您这样做:

db.collection("cities").get()
  .subscribe((querySnapshot: QuerySnapshot<DocumentData>) => {
    querySnapshot.forEach((doc: any) => {
      // doc.data() is never undefined for query doc snapshots
      console.log(doc.id, " => ", doc.data());
  });