连接超时。没有收到DDP心跳

时间:2014-08-07 11:14:51

标签: meteor ddp

我尝试从CSV上传超过5,000条评论,然后将其插入到收藏中。

我得到以下内容:

all done dfae22fc33f08cde515ac7452729cf4921d63ebe.js:24
insert failed: MongoError: E11000 duplicate key error index: ag5Uriwu.comments.$_id_  dup key: { : "SuvPB3frrkLs8nErv" } dfae22fc33f08cde515ac7452729cf4921d63ebe.js:1
Connection timeout. No DDP heartbeat received. 

手头的剧本:

  'click .importComments': function(e) {
    var $self = $(e.target);

    $self.text("Importing...");
    $("#commentsCSV").parse({
      worker: true,
      config: {
        step: function(row) {
          var data = row.data;
          for (var key in data) {
            var obj = data[key];

            post = Posts.findOne({legacyId: obj[1]});

            var comment = {
              // attributes here
            };

            Comments.insert(comment);
            Posts.update(comment.postId, {
              $inc: { commentsCount: 1 },
            });
          }
          $self.text("Import Comments");
        },
        complete: function(results, file) {
          console.log("all done");
        }
      }
    });
  }

如何在不吹嘘连接超时错误的情况下完成这项工作?

在本地,它似乎工作得体,但在生产(模数.io)它结束非常突然。

1 个答案:

答案 0 :(得分:2)

我认为这里的问题不是与DDP有关,而是与MongoDB有关。由于MongoDB错误,DDP连接超时。

您在_id字段上收到重复的密钥错误。 _id字段由MongoDB自动编入索引,它是一个唯一索引,因此相同的值不能在同一个集合中出现两次。

您上传的CSV可能在其中有自己的_id字段,这意味着Mongo不会生成自己的二进制字段(保证唯一性)。

因此,我建议您从CSV中删除_id字段(如果存在)。

您还可以尝试使用以下包:http://atmospherejs.com/package/csv-to-collection