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