当前无法在Cloud Firestore中更新单个数组元素(或添加/删除单个元素)。
这段代码在这里:
firebase.firestore().collection('proprietary').doc(docID).set( { sharedWith: [{ who: "third@test.com", when: new Date() }] }, { merge: true })这是说,在设置文件
proprietary/docID,使得
sharedWith=[{who:"third@test.com",when:newDate()}但是不会影响现有的文档属性。这与update()您提供的
set()呼叫非常相似,但是,如果文档不存在,则创建文档的
update()呼叫将失败。
因此,您有两种选择来实现所需的目标。
选项1-设置整个数组
调用
set()数组的全部内容,这将需要首先从DB中读取当前数据。如果您担心并发更新,则可以在事务中完成所有这些操作。
选项2-使用子集合
您可以
sharedWith对主文档进行子集合。然后添加单个项目将如下所示:
firebase.firestore() .collection('proprietary') .doc(docID) .collection('sharedWith') .add({ who: "third@test.com", when: new Date() })当然,这带来了新的限制。您将无法基于共享对象来查询文档,也无法
sharedWith通过单个操作获取文档和所有数据。



