我可以通过以下方法将数据发送到Firebase Firestore文档:
1)add()
2)set()
我非常清楚我该如何将数据添加到Firestore中,所以没有混乱。但是我的问题是Firebase Firestore中的“设置”方法有两个setOption,例如merge和mergefields。这两个设置选项有什么区别,我认为这两个选项都在做相同的工作。如何实现setOption'mergeFIeld'?我找不到任何文档。
答案 0 :(得分:4)
这就是我的解释方式。 如果为设置操作指定了merge = true,则它类似于Object.assign(firestoreDoc,yourpayload)。例如,如果firebaseDoc内容是这样的:
{
name:'batman',
city: 'gotham',
isLeagueMember: true
}
您的有效负载(JSON)内容如下:
{
isLeageMember:false,
reason:'gone rouge'
}
在使用merge = true进行设置操作之后,firestoreDoc看起来像
{
name:'batman',
city: 'gotham',
isLeagueMember: false,
reason:'gone rouge'
}
另一方面,对于mergeFields,您将指定要更新的字段集。因此,如果我以上述示例为例,但是这次使用合并字段选项[名称,原因]进行设置操作,则结果(设置完成后的firebaseDoc)将为:
{
name:'batman',
city: 'gotham',
isLeagueMember: true,
reason:'gone rouge'
}
这对我来说也有些困惑,直到我发现最大的线索是merge是一个布尔值并且mergeFields是一个数组。
这对于批处理操作非常方便。
希望这会有所帮助。谢谢。
答案 1 :(得分:2)
您已经注意到,使用DocumentReference的set()函数时,可以将SetOptions的merge中的任一个作为第二个参数传递:
更改set()调用的行为,以仅替换其data参数中指定的值。 set()调用中省略的字段保持不变。
或SetOptions的mergefields:
更改set()调用的行为,以仅替换指定的字段路径。任何未指定的字段路径都将被忽略,并且保持不变。
两者都是可选的。从文档中可以看到,每个文档都有特定的行为。除此之外,还有一个很大的区别,merge
是boolean
,而mergefields
是(string | FieldPath)[]
。