我有一个流星集合,我希望允许用户一次编辑多个项目,然后单击“保存”按钮以更新所有项目。
这是我的收藏:
EmpresasUsuarias = new Mongo.Collection("empresasUsuarias");
我在客户端执行此操作以将其纳入$ scope:
$scope.empresasUsuarias = $meteor.collection(EmpresasUsuarias, false);
事情是:当用户添加一些项目并单击“保存”时,我收集(仅)数组中的新项目并通过meteor方法发送到服务器。在服务器中,该方法在(mongo)集合中插入项目。一切都很好,直到流程返回客户端。在那里,该集合接收“返回”所有那些新记录 再次 并且它们重复,并且错误出现在(客户端)控制台中:
Duplicate _id in new_results
我认为正在发生的是订阅/发布机制在插入项目时激活并将其发送回客户端;但是它们已经存在并且Meteor认为它们是重复的(即:Meteor不会同步项目,但会重复它们并完成错误消息)。
我必须说我正在为客户端中的每条新记录分配_id,所以当它们到达服务器时,它们已经有一个_id。
我在这里做错了什么?为什么Meteor认为这些项目是不同的,并说它们是重复的?
非常感谢提前帮助和再见......
答案 0 :(得分:1)
嗯,这就是我解决问题的方法。我在保存之前停止了我的收藏,并在保存后重新进行了重新设置
$scope
$scope.MyCollection.stop()
$scope.MyCollection.length = 0;
$scope.MyCollection = $meteor.collection(MyCollection, false)
我一直在客户端获取_id
s(用于新文档)。我不知道我是否正确地做到了,只知道它显然是有效的。