【发布时间】:2017-11-29 13:46:47
【问题描述】:
我很难理解在 DocumentDeltaSnapshot 上调用 get()(不带参数)或 data() 之间的区别。这里是a link to the reference docs
我认为文档对get 尤其模糊:
为此方法提供的参数必须是要检索的数据的键。
但是你可以不带键调用它。
值不能为空。
在我阅读时,这里的 value 是指返回值。那么如果密钥不正确会发生什么?
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"));
这将导致运行时错误,因为 data() 的返回值上不存在 .get。
但要澄清:第一个get 调用不能有任何参数。第二个 get 调用始终需要 1 个参数。所以data 可以用来代替第二个get 来获取完整的文档数据。
【问题讨论】:
标签: firebase google-cloud-functions google-cloud-firestore