因此,我试图更新我的防火墙中有一个数组的文档。
目前,用户文档可能如下所示。
用户名: John postedProjects:'project-one',‘project-2’
然而,当John将“Project-3”提交到另一个集合时,我想抓取johns的文档,并将“Project-3”添加到他的数组中。
下面是我当前的代码(请注意,我没有使用文档UID,因为我已经将UID设置为名称,但是用户可以在行后更改他们的用户名,但是他们的UID保持不变)
var newProject = db.collection('users').where('user_id', '==', this.userInfo.user_id);
newProject.update({
postedProjects: firebase.firestore.FieldValue.arrayUnion("test")
})这是我从火药库医生所遵循的代码,它将.doc(uid)更改为.where,以将现有用户与集合中的用户进行匹配。
但是,我收到一个错误,说明"newProject.update不是一个函数“。
-添加了.where,但仍然会出现错误,因为我不知道在哪里放置"update()“
db.collection('users').where('user_id', '==', this.userInfo.user_id)
.get()
.then(function(querySnapshot) {
querySnapshot.forEach(function(doc) {
doc.data().update({
postedProjects: firebase.firestore.FieldValue.arrayUnion("new project")
})
})
})}}发布于 2020-01-17 15:34:35
其中()返回一个查询对象,它没有update()方法,从链接的update()文档中可以看到这一点。由于无法保证执行查询会产生多少文档,所以您必须对查询进行得到(),然后迭代结果以找到与文档匹配的DocumentSnapshot,使用其参考属性为其获取DocumentReference,最后使用该DocumentReference为文档进行update()。
https://stackoverflow.com/questions/59790237
复制相似问题