0

我有一个流星集合,我想允许用户一次编辑多个项目,然后单击“保存”按钮来更新它们。

这是我的收藏:

EmpresasUsuarias = new Mongo.Collection("empresasUsuarias");

我在客户端执行此操作以将其包含在 $scope 中:

$scope.empresasUsuarias = $meteor.collection(EmpresasUsuarias, false);

事情是:当用户添加一些项目并单击保存时,我(仅)收集数组中的新项目并通过流星方法发送到服务器。在服务器中,该方法在 (mongo) 集合中插入项目。一切都很好,直到流量返回客户端。在那里,集合再次接收到所有这些新记录并且它们重复,并且错误出现在(客户端)控制台中:

Duplicate _id in new_results

我认为正在发生的是订阅/发布机制在插入项目并将它们发送回客户端时激活;但它们已经存在那里并且 Meteor 认为它们是重复的(即:Meteor 不同步项目但复制它们并以错误消息结束)。

我必须说我正在为客户端中的每条新记录分配_id,所以当他们到达服务器时,他们已经有了一个_id。

我在这里做错了什么?为什么 Meteor 认为这些项目是不同的并说它们是重复的?

非常感谢您的帮助和再见...

4

1 回答 1

1

好吧,这就是我为解决我的问题所做的。我只是在保存之前停止了我的收藏,并在保存后重新声明了它。

  1. 将用户编辑保存$scope在数组中
  2. 停止收集:$scope.MyCollection.stop()
  3. $scope.MyCollection.length = 0;
  4. 调用服务器(Meteor)方法来保存编辑(通过编辑传递数组)
  5. 订阅流星收藏(再次)
  6. $scope.MyCollection = $meteor.collection(MyCollection, false)

我不断_id在客户端获取我的 s(用于新文档)。我不知道我做的是否正确,只知道这显然是有效的。

于 2015-06-17T20:10:08.393 回答