Firestore - QueryReferences 和快照之间的区别?

Sat*_*amy 5 database firebase google-cloud-firestore

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

Yil*_*maz 7

Firestore 返回两种类型的对象:引用和快照。在这些对象中,它们可以是文档版本或集合版本。Firestore 总是会返回这些对象,即使该查询中不存在任何内容。

\n\n

queryReference 对象是一个表示我们正在查询的数据库中 \xe2\x80\x9ccurrent\xe2\x80\x9d 位置的对象。

\n\n

我们可以通过以下方式获取它们:

\n\n
firestore.doc(\xe2\x80\x98/users/:userId\xe2\x80\x99);\nfirestore.collections(\xe2\x80\x98/users\xe2\x80\x99); \n
Run Code Online (Sandbox Code Playgroud)\n\n

queryReference 对象没有集合或文档的实际数据。相反,它具有告诉我们有关它的详细信息的属性,或者获取快照对象的方法,该对象为我们提供了我们正在寻找的数据。

\n\n

我们使用documentRef对象来执行 CRUD 方法(创建、检索、更新、删除)。documentRef 方法分别是.set()、.get()、.update().delete()

\n\n

我们还可以使用 .add() 方法使用 collectionRef 对象将文档添加到集合中。

\n\n
collectionRef.add({value: prop})\n
Run Code Online (Sandbox Code Playgroud)\n\n

我们使用.get()方法从引用对象中获取快照对象。IE。

\n\n
documentRef.get() or collectionRef.get() \n
Run Code Online (Sandbox Code Playgroud)\n\n

documentRef 返回一个 documentSnapshot 对象。\ncollectionRef 返回一个 querySnapshot 对象

\n\n

文档快照

\n\n

我们从 documentReference 对象中获取一个 documentSnapshot 对象。documentSnapshot 对象允许我们使用返回布尔值的.exists属性检查此查询中是否存在文档。我们还可以通过调用 .data() 方法来获取对象的实际属性,该方法返回文档的 JSON 对象。

\n\n

查询快照

\n\n

我们从 collectionReference 对象中获取一个 querySnapshot 对象。我们可以通过调用返回布尔值的 .empty 属性来检查集合中是否有任何文档。我们可以通过调用 .docs 属性来获取集合中的所有文档。它返回我们的文档数组作为 documentSnapshot 对象。

\n


Dou*_*son 5

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

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