使用.where()更新Firebase阵列。但是,获取错误;。更新isn';t函数
因此,我正在尝试更新firebase中具有数组的文档 当前,用户文档可能如下所示 用户名:约翰 postedProjects:[“项目一”,“项目二”] 然而,当John将“项目三”提交到另一个集合时,我想获取John的文档,并将“项目三”添加到他的数组中 这是我目前的代码(请注意,我没有使用该文档) UID,因为我已将UID设置为名称,但用户可以更改其用户名 沿管路向下,但其油液保持不变) 这是我从中遵循的代码,稍微调整了一下将.doc(uid)更改为.where,以将现有用户与集合中的用户进行匹配 但是,我得到一个错误,声明“newProject.update不是函数” --添加了。where但仍然出现错误,因为我不确定将“update()”放在哪里使用.where()更新Firebase阵列。但是,获取错误;。更新isn';t函数,firebase,vue.js,google-cloud-firestore,Firebase,Vue.js,Google Cloud Firestore,因此,我正在尝试更新firebase中具有数组的文档 当前,用户文档可能如下所示 用户名:约翰 postedProjects:[“项目一”,“项目二”] 然而,当John将“项目三”提交到另一个集合时,我想获取John的文档,并将“项目三”添加到他的数组中 这是我目前的代码(请注意,我没有使用该文档) UID,因为我已将UID设置为名称,但用户可以更改其用户名 沿管路向下,但其油液保持不变) 这是我从中遵循的代码,稍微调整了一下将.doc(uid)更改为.where,以将现有用户与集合中的用户进
返回一个对象,该对象没有
update()
方法,如链接的API文档所示。由于无法保证会产生多少文档,因此您必须先查询,然后迭代结果以找到与文档匹配的文档,使用其属性为其获取一个,最后使用该文档引用对文档进行更新。Firestore不支持更新查询,向服务器发送查询和更新语句。相反,您必须执行查询,检索结果,然后分别更新它们。我将代码更新为我认为可以使用的代码,但是我仍然错过了一些东西,或者不理解“update()”需要去哪里。
var newProject = db.collection('users').where('user_id', '==', this.userInfo.user_id);
newProject.update({
postedProjects: firebase.firestore.FieldValue.arrayUnion("test")
})
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")
})
})
})}}