我可以通过以下方法将数据发送到Firebase FiRecovery文档:
1) 添加()
2) set()
我很清楚,如何将数据添加到Firestore中,其中没有任何混淆。但我的问题是,Firebase Firestore中的方法“set”有两个setOption,例如merge和mergefields。这两组选项之间的区别是什么,我认为这两个选项的作用是相同的。如何实现setOption“mergeFIeld”?我找不到它的任何文档。
正如您已经注意到的,当使用DocumentResources的set()函数时,您可以将SetOptions的合并作为第二个参数传递:
更改set()调用的行为,以仅替换其数据参数中指定的值。set()调用中省略的字段保持不变。
或SetOptions的合并字段:
更改set()调用的行为以仅替换指定的字段路径。任何未指定的字段路径都将被忽略并保持不变。
两者都是可选的,但都会更改设置,以用作合并/追加插入,而不是覆盖数据参数中未提供的所有字段。如果文档引用不存在,这将从文档引用创建文档,否则将执行更新行为。
设置选项。“合并”将根据您在其数据参数中指定的对象键进行合并。设置选项。MergeFields有点尴尬。浏览文档描述很容易,但它指出,在更新值时,您指定的字段路径数组将是从数据参数中获取的唯一路径。这意味着在合并操作中不会使用数据参数中传递的所有键值。
将mergeFields
视为从提供的数据中选择键值并将其应用到您的操作中。这并不是真正必要的,只是清理键值并传递到合并
的简写。请注意,它不会删除在字段路径数组中声明的数据中省略的字段,相反,您只会收到一个Firebase错误,即输入数据中缺少字段路径。似乎显式FieldValue.delete是该行为的唯一选择。
对于嵌套字段路径,您确实可以获得一些额外的好处。您可以更明确地控制更新操作。
例如,文档名称:{第一个:“Jon”,最后一个:“Doe”}
set({name:{first:'简' } }, { 合并:真});
成为
<代码>名称:{第一个:“Jane”,最后一个:“Doe”}
set({name:{first:'larry'}},{mergeFields:['name.first']})
也成为
<代码>名称:{第一个:“Jane”,最后一个:“Doe”}
<代码>集合({name:{first:'larry'}},{mergeFields:['name']})
与其他人不同
名称:{first:'Jon'}
替换字段路径的位置。
需要注意的一件重要事情<如果你问我的话,code>{merge:true}的交互有点奇怪。如果内部对象为空,它将替换现有的内部对象。但是,如果该属性不为空,它将更新内部对象中的指定属性,并保留其余属性。
E、 g.<代码>集合({innerObject:{},{merge:true})
到现有的{innerObject:{someKey:'someValue'}}
将导致{innerObject:{}}}
然而
set({innerObject:{someOtherKey:'someOtherValue},{merge:true})
到现有的{innerObject:{someKey:'someValue'}}
将导致{innerObject:{某某键:'某某值',某某键:'某某值' } }
因此,确保清除空的内部对象,除非您想从文档中删除它们。
这就是我对它的解释。如果为集合操作指定了merge=true,则它类似于对象。分配(firestoreDoc,您的负载)。例如,如果firebaseDoc内容如下:
{
name:'batman',
city: 'gotham',
isLeagueMember: true
}
你的有效载荷(JSON)内容是这样的:
{
isLeageMember:false,
reason:'gone rogue'
}
在使用merge=true设置操作后,firestoreDoc将如下所示
{
name:'batman',
city: 'gotham',
isLeagueMember: false,
reason:'gone rogue'
}
另一方面,对于mergeFields,您可以指定要更新的字段集。因此,如果我以上述示例为例,但这次使用合并字段选项[名称,原因]设置操作,则结果(设置完成后的firebaseDoc)将是:
{
name:'batman',
city: 'gotham',
isLeagueMember: true,
reason:'gone rogue'
}
这对我来说也有点困惑,直到我发现最大的线索是合并是一个布尔值,而mergeFields是一个数组。
这对于批处理操作非常方便。
希望这有帮助。非常感谢。
考虑定义如下的 FooBar1 和 类型: 我的尝试/研究: 它们是双向相互分配的!(手动检查并使用检查 - 请参阅此处) 不过,它们彼此并不完全相同!(与检查 - 见这里) VSCode 的智能感知不会崩溃
在Cloud Firestore中,有三种写入操作: 在文档中,它说使用将给定对象与现有文档合并。 使用更新(对象)时也会发生同样的情况。。。那么有什么区别呢?谷歌会复制这样的功能,这似乎很奇怪。
我在postgresql里看到有两个独立的算法叫做外部排序和外部合并进行排序。我觉得两者是一样的。据我所知,外部排序是一个排序算法的集合,当整个批次无法在内存(RAM)中排序时,它处理大量数据的排序,并有两个阶段,第一阶段是对小块数据进行排序并将其存储在临时文件中,第二阶段是合并所有这些子文件以获得最终数据集。 我还知道外部合并排序算法是外部排序技术的一个示例。 所以在我的例子中,外部排序和外部合
本文向大家介绍分组字符合并SQL语句 按某字段合并字符串之一(简单合并),包括了分组字符合并SQL语句 按某字段合并字符串之一(简单合并)的使用技巧和注意事项,需要的朋友参考一下 标题:按某字段合并字符串之一(简单合并) 描述:将如下形式的数据按id字段合并value字段。 id value ----- ------ 1 aa 1 bb 2 aaa 2 bbb
本文向大家介绍Java中传统集合与并行集合之间的区别,包括了Java中传统集合与并行集合之间的区别的使用技巧和注意事项,需要的朋友参考一下 众所周知,在Java中,集合是最重要的概念之一,它使Java本身成为一种强大的语言。它仅支持Java中的集合,这使得它可以方便,有效地支持任何类型的数据以及可能对它们进行的CRUD操作。 但是在同一阶段,当集合暴露于多线程环境时,由于某些地方集合缺乏对多线程环
问题内容: 我想实现 .NET的时间段库中 提供的类似功能,但要实现SQL中的类似功能。 首先,我有一个表,其中有几行带有开始日期和结束日期, 我想像这样将它们合并在一起: 组合 然后,根据该结果和另一个来自不同表的结果,我想 找出它们两者之间的交集,像这样,但是只有2个输入 (找到两个中都存在的周期): 路口 一旦我有了交叉路口,便只是在上面总结时间。 在这里,我通过示例提供了一个SQL Fid