我在Flutter中创建了一个应用,然后尝试刷新Firebase中的数据,删除旧文档并添加新文档。一张一张地删除100个文档(整个集合)大约需要19.158398秒,而添加100个文档则需要17.511311秒。当我执行刷新时,需要删除整个集合,并在用新文档重新创建它之后。 这是删除集合中所有文档的方式:
QuerySnapshot qs = await Firestore.instance
.collection('DOCUMENTS')
.where('WS', isEqualTo: '${globals.qSN}')
.limit(2)
.getDocuments();
if (qs.documents.length > 0) {
await Firestore.instance
.collection('DOCUMENTS')
.getDocuments()
.then((snapshot) async{
for (DocumentSnapshot doc in snapshot.documents) {
await doc.reference.delete();
}
});
}
这是我添加文档的方式:
for(var obj in object.data){
await Firestore.instance
.collection('DOCUMENTS')
.add({
'MT': '${obj.mt}',
'CODE': '${obj.code}',
'NAME': '${obj.name}',});}
对于如何更快地执行操作,您能提供任何意见吗?等待36秒有点(我认为)。在过去的两个星期中,我试图独自寻找一个选项,但没有结果。
答案 0 :(得分:3)
无法加快从客户端应用程序删除文档的速度。从客户的角度来看,您正在做的就是最快的事情。时间可能是由于您与托管数据库的服务器之间的延迟和带宽有限所致。
请考虑在物理上更靠近数据存储区域的服务器上编写一些后端代码。您可以通过编写客户端代码可以调用的Cloud Functions HTTP触发器来做到这一点。确保将触发器部署到与Firestore实例相同的Google Cloud区域。