【发布时间】:2013-12-24 00:05:40
【问题描述】:
我得到一个显示项目列表的应用程序。 清单是一份文件 项目是具有 listId 的文档 每个项目可能有一个 itemImage(使用 collectionFs)
在页面上我有一些订阅。其中一些是当前列表的 2 个计数器,基于 db 中的项目总数(与显示的项目总数不同)和具有某些特殊状态的项目总数。
当用户删除所有这些项目时,它会向服务器发送Meteor.call('remove', listId)。
在服务器上,调用的方法不会直接删除项目,而是使用
items.find({listId: listId}).forEach()
在foreach 中,我从itemImage Collections 中删除文档
如果有超过 1000 个项目(开发服务器),那么它会阻塞接口,因为: 显示的计数器实时(几乎)递减。 当服务器完成后,所有挂起的订阅都将运行。 因此,在此待定时间内,用户被阻止。
我尝试停止柜台订阅,但没有成功。
也许我的申请被错误地考虑了。 解决办法是什么 ?修改 mongoDb(但以哪种方式?)或以另一种方式管理订阅?
我仍然想让计数器反应,因为当 mongo 中保存了新项目时,这对用户来说感觉更好。但实际上,当我删除时,它几乎没用。 谢谢
【问题讨论】:
-
您能否将
itemid 放在每个itemImage文档上,这样您就可以通过单个查询删除itemImages 吗? -
我的 itemImage 已经有 itemId,在 forEach 中我使用 itemId 删除 itemImage,但如果我可以通过 listId 上的全局查询删除图像,我无法使用 itemImage。
标签: meteor