gpt4 book ai didi

firebase - Firebase Firestore中合并字段和合并字段之间的区别

转载 作者:行者123 更新时间:2023-12-02 11:20:52 25 4
gpt4 key购买 nike

我可以通过以下方法将数据发送到Firebase Firestore文档:

1)add()

2)set()

我非常清楚地知道如何将数据添加到Firestore中,没有任何困惑。但是我的问题是Firebase Firestore中的“设置”方法有两个setOption,例如merge和mergefields。这两个设置选项有什么区别,我认为这两个选项都在做相同的工作。如何实现setOption'mergeFIeld'?我找不到任何文档。

最佳答案

正如您已经注意到的那样,当使用DocumentReference的set()函数时,可以将SetOptions的merge作为第二个参数传递:

Changes the behavior of a set() call to only replace the values specified in its data argument. Fields omitted from the set() call remain untouched.


或SetOptions的 mergefields:

Changes the behavior of set() calls to only replace the specified field paths. Any field path that is not specified is ignored and remains untouched.


两者都是可选的,但是都将 set更改为 Merge/Upsert,而不是覆盖data参数中未提供的所有字段。如果文档引用不存在,这将从文档引用创建文档,否则执行 update的行为。
SetOptions.Merge将根据您在其data参数中指定的对象键进行合并。 SetOptions.MergeFields有点尴尬。浏览文档说明很容易,但是它指出,在更新值时,您指定的字段路径数组将是从data参数中获取的唯一字段。意味着并非所有在data参数中传递的键值都在合并操作中使用。
mergeFields视为从提供的数据中选择键值并将其应用于您的操作中。并不是必须的,它只是清理键值并将其传递给 merge的简写。请注意,它不会删除在字段路径数组中声明的数据中遗漏的字段,而是只会收到Firebase错误,即输入数据中缺少字段路径。似乎显式FieldValue.delete是该行为的唯一选项。
对于嵌套的字段路径,您确实可以获得一些额外的好处。您可以更明确地控制更新操作。
前任。对于文档 name: { first: 'Jon', last: 'Doe' } set({ name: { first: 'Jane' } }, { merge: true });变成 name: { first: 'Jane', last: 'Doe' } set({ name: { first: 'larry' } }, { mergeFields: ['name.first'] })也变成 name: { first: 'Jane', last: 'Doe' } set({ name: { first: 'larry' } }, { mergeFields: ['name'] })与其他人不同 name: { first: 'Jon' }替换字段路径的位置。

关于firebase - Firebase Firestore中合并字段和合并字段之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55873115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com