data()和get()

时间:2017-11-29 13:46:48

标签: firebase google-cloud-functions google-cloud-firestore

我很难理解在get()上调用data()(不带参数)或DocumentDeltaSnapshot之间的区别。这是a link to the reference docs

我认为文档对get特别模糊:

  

为此方法提供的参数必须是要检索的数据的键。

但是你可以在没有钥匙的情况下调用它。

  

值不能为空。

当我读到它时,这里的值是指返回值。那么如果密钥错误会发生什么?

get只是data的一种更灵活的替代品,还是我忽视了一些基本的东西?

-----编辑----

我的困惑似乎来自于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"));

这将导致运行时错误,因为.get()的返回值上不存在.get。

但要澄清一下:第一个get调用不能有任何参数。第二个get调用总是需要1个参数。因此,可以使用data代替您想要完整文档数据的第二个get

0 个答案:

没有答案