何时真正在Firestore中传输数据?在文件快照中?还是等到.data()或.get()被调用之前?

时间:2018-09-27 12:49:04

标签: firebase google-cloud-firestore

我正在尝试确定如何构建应用程序的权限。其中大部分归结为标题中的问题。具体来说,如果我打电话:

const tasks = db.collection('tasks').where('canRead', 'array-contains', firebase.auth().currentUser.uid).get()并检索一个文档快照数组,是为每个快照实际传输的数据,还是直到我遍历该数组才传输的数据:

for(let taskSS of tasks.docs) { ...并最终使用let task = taskSS.data()调用.data()?

我问的原因是,如果我有一个包含大量用户的任务文档,这些用户被允许获取并列出该任务,我不想在最初的db.collection('tasks').where('canRead', 'array-contains', firebase.auth().currentUser.uid).get()调用中传输所有这些数据。

如果直到我们调用.data()或.get()才真正传输数据,那么我可以将所有任务数据放入task.public,然后执行let task = taskSS.get('public')

有人知道何时将实际数据传输到Firestore中并存入内存吗?数据实际上是在文档快照中“存储”还是没有传输,直到您使用.data()或.get()请求该数据?

1 个答案:

答案 0 :(得分:1)

当您调用get()onSnapshot()时,数据从数据库传输到应用程序。每个DocumentSnapshot都包含该文档的所有数据。调用document.data()仅返回它已经拥有的数据的映射。