我正在尝试获取收藏夹文档的文档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)
});
});
}
不幸的是,它不起作用,但是我也没有收到错误消息。
答案 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
})