【问题标题】:Firestore - Difference between QueryReferences and Snapshot?Firestore - QueryReferences 和 Snapshot 之间的区别?
【发布时间】:2019-08-26 19:15:24
【问题描述】:

QueryReference 和 Snapshot 之间的实际区别是什么?。使用 get() 和 data() 等方法时,我有点困惑。对我来说,两者似乎都喜欢从商店返回数据。

【问题讨论】:

    标签: database google-cloud-firestore


    【解决方案1】:

    引用只是对可以返回文档的文档(DocumentReference,完整路径)或查询(查询,针对集合,带有过滤器)的描述。快照是查询成功完成后文档的容器。

    当您在 DocumentReference 或 Query 上调用 get() 时,异步获取文档,结果将在快照的回调中传递。

    【讨论】:

    • 感谢您的回答。
    【解决方案2】:

    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 对象的形式返回我们的文档数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-26
      • 2020-08-01
      • 2018-10-14
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2021-12-25
      • 2020-05-10
      相关资源
      最近更新 更多