想象一下,我将以下文档存储在我的FiRecovery中。
collection: "myColection"
document: "myDocument"
fields:
someBoolean: true
someArray: ['a','b','c']
etc
Firebase文档-源
问题
执行以下方法来切换某个Boolean
字段有什么区别:
选项1
const docRef = db.collection('myCollection').doc('myDocument');
await docRef.set({
someBoolean: false
},
{merge: true});
选项2
const docRef = db.collection('myCollection').doc('myDocument');
await docRef.update({
someBoolean: false
});
>
设置
与{合并:true}
将更新文档中的字段或在找不到时创建
更新将更新字段,但如果文档不存在,将引发错误
一个重要的细节,用set你必须提供路径:
set({ foo: { bar: { baz: true } } }, { merge: true })
更新,这就足够了
update({
'foo.bar.baz': true
})
您可以找到关于{merge:true}集和update集之间差异的答案
简而言之,设置合并将创建新字段/文档,如果它们不存在,而更新将失败,如果文档不存在。
此外,update函数对嵌套值的工作方式也不同。它将替换嵌套对象,而set将新值与当前值合并。
如果您已经将myDocument文档存储在myCollection集合中,则不会有任何区别。
如果没有现有的myDocument文档,则会出现差异:set()
将起作用,但不会更新()。
查看文档https://firebase.google.com/docs/reference/js/firebase.firestore.DocumentReference#update,表示“如果应用于不存在的文档,则更新将失败。”
本文向大家介绍镜像和复制之间的区别,包括了镜像和复制之间的区别的使用技巧和注意事项,需要的朋友参考一下 镜射 镜像是指为主数据库服务器保留备份数据库服务器。如果由于某种原因主数据库已关闭,则可以将镜像数据库用作主数据库的备用数据库。原则上,一次只有一台数据库服务器处于活动状态,并且仅从一台处于活动状态的服务器提供对数据库的请求。 复写 复制是指保持数据库的多个副本分布在多个地理位置。复制的经典示例
问题内容: 我知道,无论与就将计算在东西在AngularJS变化。但是无法理解两者之间到底有什么区别。 我最初的理解是为角表达式计算的,这些角表达式是HTML端在执行函数时所执行的条件。我的想法是否正确? 问题答案: $observe() 是Attributes对象上的一种方法,因此,它只能用于观察/监视DOM属性的值更改。仅用于/调用内部指令。当您需要观察/观察包含插值的DOM属性(即{{}})
问题内容: 我在阅读PEP 0008(样式指南)时,发现它建议在实例方法中使用self作为第一个参数,而在类方法中使用cls作为第一个参数。 我已经使用并编写了一些类,但从未遇到过类方法(嗯,一种将cls作为参数传递的方法)。有人可以告诉我一些例子吗? 谢谢! 问题答案: 实例方法 创建实例方法时,第一个参数始终为。您可以随意命名,但含义始终相同,并且由于其是命名约定,因此应使用。 (通常)在调用
问题内容: 之间有什么区别 和 问题答案: 在Django的查询集文档都对这个很清楚的: 返回与给定查找参数匹配的对象,该参数应采用“字段查找”中所述的格式。 如果找到多个对象,则get()会引发MultipleObjectsReturned。MultipleObjectsReturned异常是模型类的属性。 如果找不到给定参数的对象,则get()会引发DidNotExist异常。此异常也是模型类
问题内容: 用修饰的功能和用修饰的功能有什么区别? 问题答案: 也许有点示例代码将有助于:发现其中的差别在调用签名,并且: 以下是对象实例调用方法的常用方法。对象实例,a作为第一个参数隐式传递。 使用时,对象实例的类作为第一个参数而不是隐式传递。 你也可以使用该类进行呼叫。实际上,如果你将某些东西定义为类方法,则可能是因为你打算从类而不是从类实例调用它。本来会引发,但效果很好: 人们发现类方法的一
问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子: