我正试图决定如何构造应用程序的权限。这其中很大一部分归结于标题中的问题。具体来说,如果我打电话:
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')。
有人知道什么时候实际的数据被转移到内存中吗?数据实际上是“在”文档快照中,还是在您使用.data()或.get()请求该数据之前不传输?
发布于 2018-09-27 13:34:53
当调用get()或onSnapshot()时,数据将从数据库传输到应用程序。当您得到文档时,每个DocumentSnapshot包含文档的所有数据。调用document.data()只返回它已经拥有的数据的映射。
https://stackoverflow.com/questions/52537423
复制相似问题