我在这里找不到东西。我的问题是如何更新 AngularFire 中 WHERE 子句中返回的文档:
constructor(private db: AngularFirestore) { }
var path = this.db.collection('users').doc('type').collection('customer')
.ref.where('name', '==', 'roger');
如何更新该用户?
var query = path.set/update..?
不工作。
我不明白之前的答案是如何被接受的,因为行为是错误的并且以无限循环结束(snapshotChanges()
触发器update()
,这再次触发snapshotChanges()
因为它已经订阅了。)另外,这个 Angularfire Synatx 已经过时了,所以我会指出一种不同的方法。
为了实现 OP 正在寻找的行为,最佳实践是将文档 ID 存储在文档本身中。创建项目时,add()
返回一个DocumentReference
,其中包括刚刚插入的项目的 ID。
一个示例实现是:
create(user) {
return new Promise<any>((resolve, reject) => {
this.db
.collection('users')
.doc('type')
.collection('customer')
.add(user)
.then(res => {
this.updateUserId(res.id);
}, err => reject(err));
});
}
updateUserId(id: string) {
return this.db
.collection('users')
.doc('type')
.collection('customer')
.doc(id)
.set({ id: id }, { merge: true });
}
在这种情况下,将创建用户,然后立即创建id
的领域user
对象将被更新(因为 Firestore 文档 ID 仅在插入后才可用)。现在可以通过用户的文档 ID 轻松更新用户。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)