@@ -1878,6 +1878,7 @@ Model.create = function create(doc, callback) {
1878
1878
}
1879
1879
1880
1880
var toExecute = [ ] ;
1881
+ var firstError ;
1881
1882
args . forEach ( function ( doc ) {
1882
1883
toExecute . push ( function ( callback ) {
1883
1884
var Model = _this . discriminators && doc [ discriminatorKey ] ?
@@ -1886,9 +1887,12 @@ Model.create = function create(doc, callback) {
1886
1887
var toSave = doc instanceof Model ? doc : new Model ( doc ) ;
1887
1888
var callbackWrapper = function ( error , doc ) {
1888
1889
if ( error ) {
1889
- return callback ( error ) ;
1890
+ if ( ! firstError ) {
1891
+ firstError = error ;
1892
+ }
1893
+ return callback ( null , { error : error } ) ;
1890
1894
}
1891
- callback ( null , doc ) ;
1895
+ callback ( null , { doc : doc } ) ;
1892
1896
} ;
1893
1897
1894
1898
// Hack to avoid getting a promise because of
@@ -1901,12 +1905,20 @@ Model.create = function create(doc, callback) {
1901
1905
} ) ;
1902
1906
} ) ;
1903
1907
1904
- parallel ( toExecute , function ( error , savedDocs ) {
1905
- if ( error ) {
1908
+ parallel ( toExecute , function ( error , res ) {
1909
+ var savedDocs = [ ] ;
1910
+ var len = res . length ;
1911
+ for ( var i = 0 ; i < len ; ++ i ) {
1912
+ if ( res [ i ] . doc ) {
1913
+ savedDocs . push ( res [ i ] . doc ) ;
1914
+ }
1915
+ }
1916
+
1917
+ if ( firstError ) {
1906
1918
if ( cb ) {
1907
- cb ( error ) ;
1919
+ cb ( firstError , savedDocs ) ;
1908
1920
} else {
1909
- reject ( error ) ;
1921
+ reject ( firstError ) ;
1910
1922
}
1911
1923
return ;
1912
1924
}
@@ -1917,8 +1929,7 @@ Model.create = function create(doc, callback) {
1917
1929
} else {
1918
1930
resolve . apply ( promise , savedDocs ) ;
1919
1931
if ( cb ) {
1920
- savedDocs . unshift ( null ) ;
1921
- cb . apply ( _this , savedDocs ) ;
1932
+ cb . apply ( _this , [ null ] . concat ( savedDocs ) ) ;
1922
1933
}
1923
1934
}
1924
1935
} ) ;
0 commit comments