set()方法在DocumentReference上有第二个参数SetOptions,它允许您声明要将数据合并到现有文档中而不是覆盖它:
db.collection('events')
.doc('documentNameUsingUniqueEventID')
.set(data, { merge: true });
.add
在一个集合上添加带有自动ID的数据。.set
在文档上完全覆盖它。.update
在文档上更新它的一部分。participants
。SetOptions.merge()
启用集合合并,例如。db.collection('events')
.doc('documentNameUsingUniqueEventID')
.set(data, SetOptions.merge());
我使用.update()和{merge: true}解决了我的问题。我没有在php中传递participants和ageAverage,但当我需要上传数据时,我会创建它们。
.add
而不是.set
(不包括.doc()
引用)。如果您想指定文档ID,则可以.set
新文档并.update
后续写入。如果您不知道正在使用的ID是否存在,则Doug的方法.set(data,{merge:true})
应该最适合您。 - Jason Berryman.set
,因为我从txt文件中获取json。问题在于,在json中,我将唯一事件ID作为ID,而不是由firestore自动生成的ID。因此,当我调用php时,即使我使用merge:true,它也会覆盖所有数据。我只想在调用php时保留参与者和年龄平均值。 - Dennis.set(data, {merge: true})
应该可以完全实现你想要的功能。但是,我不熟悉 PHP SDK。这里可能存在一些不一致性。你需要联系一位了解 PHP SDK 的 Firebase 开发者。抱歉! - Jason Berryman