答案 0 :(得分:2)
这应该是一件容易的事。您可以使用更新功能,并传递字段名称和值以进行更新。
ex:
this.db.doc(`options/${id}`).update({rating:$rating}); //<-- $rating is dynamic
答案 1 :(得分:1)
好的,您必须执行以下步骤:
它看起来像这样:
updateDoc(_id: string, _value: string) {
let doc = this.afs.collection('options', ref => ref.where('id', '==', _id));
doc.snapshotChanges().pipe(
map(actions => actions.map(a => {
const data = a.payload.doc.data();
const id = a.payload.doc.id;
return { id, ...data };
}))).subscribe((_doc: any) => {
let id = _doc[0].payload.doc.id; //first result of query [0]
this.afs.doc(`options/${id}`).update({rating: _value});
})
}
答案 2 :(得分:1)
声明要更改的集合非常简单(.collection) (.doc)指定您要更新的文档的ID,而(.update)中的(.update)只需放置您要更改的更新字段
constructor(private db: AngularFirestore) {}
this.db
.collection('options')
.doc('/' + 'mzx....')
.update({rating: value})
.then(() => {
console.log('done');
})
.catch(function(error) {
console.error('Error writing document: ', error);
});
答案 3 :(得分:0)
如果您的ID是唯一的,则仅返回一个查询结果,我发现不需要pipe
-map
。
updateDoc(_id: string, _value: string) {
let doc = this.afs.collection('options', ref => ref.where('id', '==', _id));
doc.snapshotChanges().subscribe((res: any) => {
let id = res[0].payload.doc.id;
this.afs.collection('options').doc(id).update({rating: _value});
});
}