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

时间:2019-08-26 19:15:24

标签: google-cloud-firestore

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

2 个答案:

答案 0 :(得分:2)

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

当您在DocumentReference或Query上调用function stop_happening() { var $el = $('div.fullwall div.slideshow'); $el // first, stop the current automation. .timer('stop') // Timer plug-in // next, change class name in order to prevent the timer // from being started again. .removeClass('slideshow').addClass('slideshow-disabled-automation'); //--- copied some extra code from the website itself for the onclick // events which are supposed to keep working. I wish I could do *that* // programmatically but I'm glad I got as far as I got. ---// // […] } 时,它会异步获取文档,结果将在快照的回调中传递。

答案 1 :(得分:1)

Firestore向我们返回两种类型的对象:引用和快照。在这些对象中,它们可以是文档版本或集合版本。即使该查询中不存在任何内容,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中获取快照对象 方法。即。

documentRef.get() or collectionRef.get() 

documentRef返回一个documentSnapshot对象。 collectionRef返回一个querySnapshot对象

文档快照

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

查询快照

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