Angular 单击按钮时存储更新特定文档字段
我试图在单击按钮时将文档中的“orderCompleted”字段设置为true。然而,当我试图这样做时,什么也没有发生。我已经编写了一个名为“updateOrderComplete()”的函数来更新firebase中的字段,然后单击按钮调用它,但它不更新 组件: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) {
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?抱歉,我是angularafterupdate()
this.firestore.collection('Order').doc(id).update({orderCompleted:true}).然后(()=>console.log('success')).catch(err=>console.error(err))
更改html类型后立即获取此错误错误错误错误:undefined不是对象(评估'res[0].payload'))新建单击事件`完成`