Model.create可以检索已创建的文档数

时间:2014-08-18 09:41:40

标签: node.js mongodb validation mongoose bulkinsert

我在Mongoose中使用Model.create(Array) 我想向用户提供有关已创建文档的数量以及有多少文档尚未创建的反馈(即他们没有验证)。
我创建了一个像这样的回调

User.create(usersToImport, function(err, docs) {  
    console.log(err);
    console.log(docs);
}

问题是如果任何文档没有验证,我只会在单个无效文档上收到验证错误,而我无法检索有关插入文档的任何信息。
有没有办法获得这些信息?

2 个答案:

答案 0 :(得分:1)

我认为,你需要来自.settle() methodwhen.js module

以下是使用when.jsmongoose 3.8.x

进行此操作的示例
when = require('when');

promises = usersToImport.map(function(user) {
  return User.create(user); // returns Promise
});
when.settle(promises).then(function(results) {
  // results is an array, containing following elements:
  //   { state: 'fulfilled', value: <document> }
  //   { state: 'rejected', value: <error> }
});

没有Promise就可以做到这一点(例如使用async module),但代码会复杂得多。

答案 1 :(得分:0)

Model.create()不会为您返回该信息。最好的选择是滚动自己的Model.create()版本,这实际上是一种多次调用Model.save()的便捷方法,并自行整理信息。一个好的入门方法是Model.create()的代码。