QueryDocumentSnapshot似乎缺少其父类的方法

时间:2018-11-20 15:59:39

标签: javascript firebase google-cloud-firestore

我正在使用Firebase构建数据库应用程序。我正在尝试获取Firebase生成的特定文档的ID。该文档作为Promise返回,该Promise返回QuerySnapshot。 forEach循环将每个QueryDocumentSnapshot拉出QuerySnapshot,因此我正在使用QueryDocumentSnapshot类。文档说该类与DocumentSnapshot类具有相同的API表面。

https://developers.google.com/android/reference/com/google/firebase/firestore/QueryDocumentSnapshot

由于DocumentSnapshot类具有getId()方法,所以我认为我会使用它。

searchBooks(){

this.booksSearched = true;
this.bookService.getBookList(this.authorName).get().then(bookListSnapshot =>{
  this.bookList = [];
  bookListSnapshot.forEach( snap =>{
    this.bookList.push({
      authorLastName: snap.data().authorLastName,
      title: snap.data().title,
      edition: snap.data().edition,
      id: snap.getId() <-------ISSUE HERE----------- 
    });

    return false;
  });
});

}

但是,出现此错误。

property 'getId' does not exist on type 'QueryDocumentSnapshot'

这是bookService的代码

getBookList(authorLastName): firebase.firestore.Query{

  return this.bookListRef.where("authorLastName", "==", authorLastName);
}

更疯狂的是当我尝试更改代码时。我以为我可以利用bookListSnapShot是QuerySnapshot并调用其getDocuments()方法这一事实,而不是使用forEach循环拉出QueryDocumentSnapshots。 https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/QuerySnapshot

这将返回DocumentSnapshots列表,这可能意味着可以避免getId()方法的任何继承问题。但是,当我尝试时,出现此错误:

var documents = bookListSnapshot.getDocuments();
Property 'getDocuments' does not exist on type 'QuerySnapshot'

在我看来,文档与编辑器引发的错误相矛盾。有人知道发生了什么吗?

感谢您阅读

-乔尔

1 个答案:

答案 0 :(得分:1)

您正在用JavaScript编写代码,但是正在查看使用Java的Android的API文档。以下是DocumentSnapshotQueryDocumentSnapshot的JavaScript API文档。 DocumentSnapshot具有您要查找的名为id的属性。