我很难理解在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
。