假设Firebase Firestore上的一个文档表示一个房屋
{
id: "1234",
owner: "John",
address: "123 Something Ave.",
residents: [],
}
我有一个云函数,应该将居民添加到房子中。另请注意:residents字段并不总是从一开始就存在。想法是在添加第一个resident时添加它。
这是我的操作,它是云函数的一部分:
db.collection("houses")
.doc(house_id)
.set(
{
residents: admin.firestore.FieldValue.arrayUnion({
uid: context.auth.uid,
first_name: driverData.first_name,
last_name: driverData.last_name,
}),
},
{ merge: true }
);
但是,该函数并没有使用数组创建这个字段,而是将所有其他数据保留在文档中,而是完全删除了所有其他数据,只剩下residents数组字段。
为什么会这样?
1条答案
按热度按时间unhi4e5o1#
我理解差异的方式:
merge
的set
将更新文档中的字段,如果字段不存在,则创建字段update
将更新字段,但如果文档不存在,则会失败要只更新
residents
字段,可以使用update()
方法而不是set()
方法。