如何获取带有 id 的特定文档数据? |角火 5.1.1 |云Firestore |文件
How to get particular document data with id ? | AngularFire 5.1.1 | Cloud Firestore | Documents
我正在使用数据访问服务从 firebase firestore 获取数据。
如何使用 snapshotChanges() 方法获取具有 id
的特定文档数据
getProduct(id: number): Observable<Product> {
this.productsDocuments = this.angularfirestore.doc<Product>('products/' + id);
this.product = this.productsDocuments.snapshotChanges().pipe(
map(changes => changes.map(a => {
const data = a.payload.doc.data() as Product;
const id = a.payload.doc.id;
return { id, ...data };
}))
);
return this.product
我想要this.productreturns文档值和文档id
谢谢!!
文档只是一个对象{[field]: value}
集合是文档 [document]
.
的容器
您正在尝试获取单个 document/object,但问题是您无法直接映射到它。我认为您想获取整个集合,然后映射所有文档。
getProduct(id: number): Observable<Product> {
const productsDocuments = this.db.doc<Product>('products/' + id);
return productsDocuments.snapshotChanges()
.pipe(
map(changes => {
const data = changes.payload.data();
const id = changes.payload.id;
return { id, ...data };
}))
}
合集
getProduct(id: string): Observable<Product[]> {
const productsDocuments = this.db.collection<Product[]>('products');
return productsDocuments.snapshotChanges()
.pipe(
map(changes => changes.map(({ payload: { doc } }) => {
const data = doc.data();
const id = doc.id
return { id, ...data };
})),
map((products) => products.find(doc => doc.id === id)))
}
我正在使用数据访问服务从 firebase firestore 获取数据。
如何使用 snapshotChanges() 方法获取具有 id
的特定文档数据getProduct(id: number): Observable<Product> {
this.productsDocuments = this.angularfirestore.doc<Product>('products/' + id);
this.product = this.productsDocuments.snapshotChanges().pipe(
map(changes => changes.map(a => {
const data = a.payload.doc.data() as Product;
const id = a.payload.doc.id;
return { id, ...data };
}))
);
return this.product
我想要this.productreturns文档值和文档id
谢谢!!
文档只是一个对象{[field]: value}
集合是文档 [document]
.
您正在尝试获取单个 document/object,但问题是您无法直接映射到它。我认为您想获取整个集合,然后映射所有文档。
getProduct(id: number): Observable<Product> {
const productsDocuments = this.db.doc<Product>('products/' + id);
return productsDocuments.snapshotChanges()
.pipe(
map(changes => {
const data = changes.payload.data();
const id = changes.payload.id;
return { id, ...data };
}))
}
合集
getProduct(id: string): Observable<Product[]> {
const productsDocuments = this.db.collection<Product[]>('products');
return productsDocuments.snapshotChanges()
.pipe(
map(changes => changes.map(({ payload: { doc } }) => {
const data = doc.data();
const id = doc.id
return { id, ...data };
})),
map((products) => products.find(doc => doc.id === id)))
}