Sat*_*amy 5 database firebase google-cloud-firestore
QueryReference 和 Snapshot 之间的实际区别是什么?当使用 get() 和 data() 等方法时,我有点困惑。对我来说,两者似乎都喜欢从商店返回数据。
Firestore 返回两种类型的对象:引用和快照。在这些对象中,它们可以是文档版本或集合版本。Firestore 总是会返回这些对象,即使该查询中不存在任何内容。
\n\nqueryReference 对象是一个表示我们正在查询的数据库中 \xe2\x80\x9ccurrent\xe2\x80\x9d 位置的对象。
\n\n我们可以通过以下方式获取它们:
\n\nfirestore.doc(\xe2\x80\x98/users/:userId\xe2\x80\x99);\nfirestore.collections(\xe2\x80\x98/users\xe2\x80\x99); \nRun Code Online (Sandbox Code Playgroud)\n\nqueryReference 对象没有集合或文档的实际数据。相反,它具有告诉我们有关它的详细信息的属性,或者获取快照对象的方法,该对象为我们提供了我们正在寻找的数据。
\n\n我们使用documentRef对象来执行 CRUD 方法(创建、检索、更新、删除)。documentRef 方法分别是.set()、.get()、.update()和.delete()。
\n\n我们还可以使用 .add() 方法使用 collectionRef 对象将文档添加到集合中。
\n\ncollectionRef.add({value: prop})\nRun Code Online (Sandbox Code Playgroud)\n\n我们使用.get()方法从引用对象中获取快照对象。IE。
\n\ndocumentRef.get() or collectionRef.get() \nRun Code Online (Sandbox Code Playgroud)\n\ndocumentRef 返回一个 documentSnapshot 对象。\ncollectionRef 返回一个 querySnapshot 对象
\n\n文档快照:
\n\n我们从 documentReference 对象中获取一个 documentSnapshot 对象。documentSnapshot 对象允许我们使用返回布尔值的.exists属性检查此查询中是否存在文档。我们还可以通过调用 .data() 方法来获取对象的实际属性,该方法返回文档的 JSON 对象。
\n\n查询快照
\n\n我们从 collectionReference 对象中获取一个 querySnapshot 对象。我们可以通过调用返回布尔值的 .empty 属性来检查集合中是否有任何文档。我们可以通过调用 .docs 属性来获取集合中的所有文档。它返回我们的文档数组作为 documentSnapshot 对象。
\n引用只是对可以返回文档的文档(DocumentReference,完整路径)或查询(查询,针对集合,带有过滤器)的描述。快照是查询成功完成后文档的容器。
当您调用get()DocumentReference 或 Query 时,它会异步获取文档,并且结果将在快照的回调中传递。