Firebase data()和get()之间的区别是什么
我很难理解在Firebase data()和get()之间的区别是什么,firebase,google-cloud-functions,google-cloud-firestore,Firebase,Google Cloud Functions,Google Cloud Firestore,我很难理解在DocumentDeltaSnapshot上调用get()(无参数)或data()之间的区别。这是 文档中关于get的内容特别模糊,我认为: 为此方法提供的参数必须是要检索的数据的键 但是你不用钥匙也可以叫它 值不能为null 正如我读到的,这里的值指的是返回值。那么,如果密钥不正确,会发生什么情况呢 是get只是数据更灵活的替代方案,还是我忽略了一些基本的东西 -----编辑---- 我的困惑似乎是因为有两种类型的get。一个用于检索文档快照,另一个用于访问文档数据中的特定字段 c
DocumentDeltaSnapshot
上调用get()
(无参数)或data()
之间的区别。这是
文档中关于get
的内容特别模糊,我认为:
为此方法提供的参数必须是要检索的数据的键
但是你不用钥匙也可以叫它
值不能为null
正如我读到的,这里的值指的是返回值。那么,如果密钥不正确,会发生什么情况呢
是get
只是数据
更灵活的替代方案,还是我忽略了一些基本的东西
-----编辑----
我的困惑似乎是因为有两种类型的get
。一个用于检索文档快照,另一个用于访问文档数据中的特定字段
const ref = db.collection("someCollection").doc("someDocumentId");
const value = await ref
.get()
.then(doc => doc.get("someProperty"));
// or for the whole document do
.then(doc => doc.data());
更令人困惑的是,Typescript的SDK类型定义也很乐意让我这样做:
const value = await ref
.get()
.then(doc => doc.data().get("someProperty"));
这将导致运行时错误,因为data()的返回值上不存在.get
但需要澄清的是:第一个get
调用不能有任何参数。第二个get
调用始终需要1个参数。因此,可以使用data
代替第二个get
来获取完整的文档数据。建议将data()
作为JavaScript对象来访问整个文档,而get()则访问各个字段
const ref = db.collection("someCollection").doc("someDocumentId");
const value = await ref
.get()
.then(doc => doc.get("someProperty"));
// or for the whole document do
.then(doc => doc.data());
您可以使用get函数访问特定字段:
// Fetch data using standard accessors
const age = event.data.data().age;
const name = event.data.data()['name'];
// Fetch data using built in accessor
const experience = event.data.get('experience');
按照我阅读API文档的方式,传递给
get()
的字符串不能为空。必须提供要从文档访问的某些属性的名称。没错。但我已经解释了困惑的来源。是的,我知道这有多困惑。事实证明,云函数API和Firestore客户端API实际上是由不同的团队驱动的,因此它们可能是独立发展的,并且在这里发生了令人困惑的冲突。这正是我在尝试阅读文档时得到的印象。我希望他们能在不久的将来设法合并一些东西。