我尝试从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)它结束非常突然。
答案 0 :(得分:2)
我认为这里的问题不是与DDP有关,而是与MongoDB有关。由于MongoDB错误,DDP连接超时。
您在_id
字段上收到重复的密钥错误。 _id
字段由MongoDB自动编入索引,它是一个唯一索引,因此相同的值不能在同一个集合中出现两次。
您上传的CSV可能在其中有自己的_id
字段,这意味着Mongo不会生成自己的二进制字段(保证唯一性)。
因此,我建议您从CSV中删除_id
字段(如果存在)。
您还可以尝试使用以下包:http://atmospherejs.com/package/csv-to-collection