Angular无法获取文档ID

时间:2019-08-06 08:46:26

标签: javascript angular google-cloud-firestore

我正在尝试获取收藏夹文档的文档ID。 为此,我创建了这个:

  this.afs.collection("Blogs").valueChanges().map(document => {
    return document.where('title','==','test')(a => {
      const data = a.payload.doc.data();//Here is your content
      const id = a.payload.doc.id;//Here is the key of your document
      console.log('documentsId', id)

    });
  });
}

不幸的是,它不起作用,但是我也没有收到错误消息。

2 个答案:

答案 0 :(得分:2)

您使用的代码段仅适用于snapshotChanges valueChanges 仅在未提供ID的情况下返回对象数据。根据文档,将id用作参数应该在angularfire的{​​{3}}中起作用。

但是对于您的情况,它将不起作用,您不知道我假设的ID。因此,就像文档中所建议的那样,如果您需要元数据,请使用 latest version 。我还假设您正在将rxjs版本与pipeble运算符一起使用,如果需要,请使用pipe。此外,您的代码在ref的帮助下看起来有些偏离。试试:

import { map } from 'rxjs/operators';

// ....

return this.afs.collection('Blogs', ref => ref.where('title','==','test'))
  .snapshotChanges()
  .pipe(
    map(docs => docs.map(a => {
       const data = a.payload.doc.data(); // Here is your content
       const id = a.payload.doc.id; // Here is the key of your document
       console.log('documentsId', id);
       return {id: id, ...data }
     })
    )
  )

请记住在组件中订阅此功能。

答案 1 :(得分:0)

valueChanges()函数将返回一个可观察的对象,要从一个可观察的对象获取值,您必须订阅它:

this.afs.collection("Blogs").valueChanges().subsricbe(val => {
  console.log(value);
  // and do your stuffs
})