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实际上是由不同的团队驱动的,因此它们可能是独立发展的,并且在这里发生了令人困惑的冲突。这正是我在尝试阅读文档时得到的印象。我希望他们能在不久的将来设法合并一些东西。