документ - это просто объект {[field]: value}
а коллекция представляет собой контейнер для документов [document]
вы пытаетесь получить один документ, он же объект, и проблема в том, что вы не можете отобразить его напрямую, я думаю, что вы хотите получить всю коллекцию, если! карту можно узнать по всем документам
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)))
}
извините за плохой английский