Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 单击按钮时存储更新特定文档字段_Angular_Firebase_Google Cloud Firestore_Angularfire - Fatal编程技术网

Angular 单击按钮时存储更新特定文档字段

Angular 单击按钮时存储更新特定文档字段,angular,firebase,google-cloud-firestore,angularfire,Angular,Firebase,Google Cloud Firestore,Angularfire,我试图在单击按钮时将文档中的“orderCompleted”字段设置为true。然而,当我试图这样做时,什么也没有发生。我已经编写了一个名为“updateOrderComplete()”的函数来更新firebase中的字段,然后单击按钮调用它,但它不更新 组件: export class OrdersComponent{ orders: Observable<any[]>; constructor(public firestore: AngularFirestore) {

我试图在单击按钮时将文档中的“orderCompleted”字段设置为true。然而,当我试图这样做时,什么也没有发生。我已经编写了一个名为“updateOrderComplete()”的函数来更新firebase中的字段,然后单击按钮调用它,但它不更新

组件:

export class OrdersComponent{
  orders: Observable<any[]>;
  constructor(public firestore: AngularFirestore) {
    this.orders = firestore.collection('Order', ref=>
    ref.where('orderCompleted', '==', false).orderBy('collectionTime', 'asc')).valueChanges();
  }

  // markComplete = data => this.markComplete(data);

  updateOrderComplete(_id: string){
   let doc = this.firestore.collection('Order', ref => ref.where('objectId', '==', _id));
   doc.snapshotChanges().subscribe((res: any) => {
     let id = res[0].payload.doc.id;
     this.firestore.collection('Order').doc(id).update({orderCompleted: true})
   })
  }
}
  <div class="card-footer">
                          <button style="float: right;" class="btn btn-outline-light" (click)="updateOrderComplete">
                              Complete
                          </button>
                      </div>
导出类OrdersComponent{
顺序:可观察;
建造商(公共消防商店:AngularFirestore){
this.orders=firestore.collection('Order',ref=>
ref.where('orderCompleted','==',false).orderBy('collectionTime','asc')).valueChanges();
}
//markComplete=data=>this.markComplete(数据);
updateOrderComplete(\u id:string){
让doc=this.firestore.collection('Order',ref=>ref.where('objectId','=','u id');
doc.snapshotChanges().subscribe((res:any)=>{
设id=res[0].payload.doc.id;
this.firestore.collection('Order').doc(id).update({orderCompleted:true})
})
}
}
HTML:

export class OrdersComponent{
  orders: Observable<any[]>;
  constructor(public firestore: AngularFirestore) {
    this.orders = firestore.collection('Order', ref=>
    ref.where('orderCompleted', '==', false).orderBy('collectionTime', 'asc')).valueChanges();
  }

  // markComplete = data => this.markComplete(data);

  updateOrderComplete(_id: string){
   let doc = this.firestore.collection('Order', ref => ref.where('objectId', '==', _id));
   doc.snapshotChanges().subscribe((res: any) => {
     let id = res[0].payload.doc.id;
     this.firestore.collection('Order').doc(id).update({orderCompleted: true})
   })
  }
}
  <div class="card-footer">
                          <button style="float: right;" class="btn btn-outline-light" (click)="updateOrderComplete">
                              Complete
                          </button>
                      </div>

完成

更新是一个承诺,您可以添加then and catch并查看是否出现任何错误或是否成功?我必须在哪里添加then and catch?抱歉,我是angularafter
update()
this.firestore.collection('Order').doc(id).update({orderCompleted:true}).然后(()=>console.log('success')).catch(err=>console.error(err))
更改html类型后立即获取此错误错误错误错误:undefined不是对象(评估'res[0].payload'))新建单击事件`完成`