addSnapshotListener快速存储区行为

时间:2019-06-22 12:23:06

标签: swift firebase google-cloud-firestore

我在Cloud Firestore中有一个文档,我正在听更新。它有2个字段,有一个字段描述和一个图片字段。图片约为0.2 mb,描述仅需几句话。我想知道如果我更改了文档中的描述会发生什么,我想知道addSnapshotListener实际上是下载文档的新副本还是仅下载已更改的字段。

通过查看Xcode中下载了多少数据,我确实看到了,该文档的新副本被下载了。

这根本没有效率,因为图片字段很少更改,因此在我的应用程序中可能仅更改描述。

有没有一种优化方法?

2 个答案:

答案 0 :(得分:2)

  

有没有一种优化方法?

是的!不要那样做。

Firestore(和实时数据库)并非旨在按字段存储图像或大型数据集。

您应该浏览Storage并保留对Firebase存储器中存储的项目的引用(url)。

  

Cloud Storage专为需要存储和服务的应用程序开发人员打造   用户生成的内容,例如照片或视频。

如果需要更新或更改Firestore中的字段,利用存储空间,您将只处理少量数据,而不是整个图像。

回答问题;如果您从Firebase中读取文档,它将读取该文档及其子数据。

这是“存储文档”的链接,其中显示了如何捕获对上传到存储中的项目的引用。

https://firebase.google.com/docs/storage/ios/upload-files

答案 1 :(得分:0)

如果要自动将图像同步到所有客户端并使它们脱机使用,只需将它们放在单独的文档中。

// Store your small, frequently changing text here: 
db.collection('users').doc(userId).set({email: vince@example.com})

// Store your image here: 
db.collection('user_profile_pic').doc(userId).set({data: <imagedata>})