【问题标题】: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
      相关资源
      最近更新 更多