【发布时间】:2019-08-26 19:15:24
【问题描述】:
QueryReference 和 Snapshot 之间的实际区别是什么?。使用 get() 和 data() 等方法时,我有点困惑。对我来说,两者似乎都喜欢从商店返回数据。
【问题讨论】:
标签: database google-cloud-firestore
QueryReference 和 Snapshot 之间的实际区别是什么?。使用 get() 和 data() 等方法时,我有点困惑。对我来说,两者似乎都喜欢从商店返回数据。
【问题讨论】:
标签: database google-cloud-firestore
引用只是对可以返回文档的文档(DocumentReference,完整路径)或查询(查询,针对集合,带有过滤器)的描述。快照是查询成功完成后文档的容器。
当您在 DocumentReference 或 Query 上调用 get() 时,异步获取文档,结果将在快照的回调中传递。
【讨论】:
Firestore 向我们返回两种类型的对象:引用和快照。在这些对象中,它们可以是 Document 或 Collection 版本。 Firestore 将始终向我们返回这些对象,即使该查询中不存在任何内容。
queryReference 对象是表示我们正在查询的数据库中“当前”位置的对象。
我们通过调用任一方法获取它们:
firestore.doc(‘/users/:userId’);
firestore.collections(‘/users’);
queryReference 对象没有集合或文档的实际数据。相反,它具有告诉我们有关它的详细信息的属性,或者获取 Snapshot 对象的方法,该对象为我们提供了我们正在寻找的数据。
我们使用 documentRef 对象来执行我们的 CRUD 方法(创建、检索、更新、删除)。 documentRef 方法分别是 .set()、.get()、.update() 和 .delete()。
我们还可以使用 .add() 方法使用 collectionRef 对象将文档添加到集合中。
collectionRef.add({value: prop})
我们使用 .get() 从 referenceObject 中获取 snapshotObject 方法。即。
documentRef.get() or collectionRef.get()
documentRef 返回一个 documentSnapshot 对象。 collectionRef 返回一个 querySnapshot 对象
文档快照:
我们从 documentReference 对象中得到一个 documentSnapshot 对象。 documentSnapshot 对象允许我们使用返回布尔值的 .exists 属性检查此查询中是否存在文档。我们还可以通过调用 .data() 方法获取对象的实际属性,该方法返回文档的 JSON 对象。
查询快照
我们从 collectionReference 对象中得到一个 querySnapshot 对象。我们可以通过调用返回布尔值的 .empty 属性来检查集合中是否有任何文档。我们可以通过调用 .docs 属性来获取集合中的所有文档。它以 documentSnapshot 对象的形式返回我们的文档数组。
【讨论】: