Firestore:如何更新文档的特定字段?

时间:2018-11-07 05:43:33

标签: angular firebase google-cloud-firestore

如何访问和更新角度Firestore中的特定字段: enter image description here

4 个答案:

答案 0 :(得分:2)

这应该是一件容易的事。您可以使用更新功能,并传递字段名称和值以进行更新。

ex:

this.db.doc(`options/${id}`).update({rating:$rating}); //<-- $rating is dynamic

答案 1 :(得分:1)

好的,您必须执行以下步骤:

  • 首先请确保您创建的查询名称或ID或什至两者都必须是唯一的
  • 然后您通过snapshotChanges订阅此查询
  • 接下来,您将从所查询的对象中获取ID
  • 此后,您将使用此ID使用新值更新文档

它看起来像这样:

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});
  });
}