在Mongoose中有一个方法Model#create,我可以发送一个对象数组。
var items = [{id: 1},{id: 2},{id: 3},{id: 4}];
Model.create(array, function (err, succededItems) {
...
});
除了我尝试创建的某些对象无法保存时的行为,一切正常。在我得到的err
对象中的这个场景中,有关于第一个失败的对象的详细信息,并且在succededItems
中我得到了一个已保存的对象数组。
我怀疑是否有可能以err
或其他方式进入,一个对象未能保存和推理的数组,为什么会发生这种情况?
提前谢谢。
答案 0 :(得分:2)
不幸的是Mongoose returns only the first error,所以你最好的选择就是使用承诺的组合:
Promise
.all( items.map( item => {
return Model.create( item )
.catch( error => ( { error } ) )
}) )
.then( items => {
items.forEach( item => {
if ( item.error ) {
console.log( "Item has failed with error", item.error );
} else {
console.log( "Item created successfully" );
}
} );
} );