Mongoose在数组中创建多个对象,但部分成功

时间:2017-08-03 10:48:19

标签: mongodb mongoose mongoose-schema

在Mongoose中有一个方法Model#create,我可以发送一个对象数组。

var items = [{id: 1},{id: 2},{id: 3},{id: 4}];
Model.create(array, function (err, succededItems) {
   ...
});

除了我尝试创建的某些对象无法保存时的行为,一切正常。在我得到的err对象中的这个场景中,有关于第一个失败的对象的详细信息,并且在succededItems中我得到了一个已保存的对象数组。

我怀疑是否有可能以err或其他方式进入,一个对象未​​能保存和推理的数组,为什么会发生这种情况?

提前谢谢。

1 个答案:

答案 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" );
             }
         } );

    } );