我正在尝试确定如何构建应用程序的权限。其中大部分归结为标题中的问题。具体来说,如果我打电话:
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()请求该数据?
答案 0 :(得分:1)
当您调用get()
或onSnapshot()
时,数据从数据库传输到应用程序。每个DocumentSnapshot
都包含该文档的所有数据。调用document.data()
仅返回它已经拥有的数据的映射。