2013-03-14 18 views
19

So che nell'ultima versione di Mongoose è possibile passare più documenti al metodo di creazione, o meglio nel mio caso una serie di documenti.Mongoose crea più documenti

var array = [{ type: 'jelly bean' }, { type: 'snickers' }]; 
Candy.create(array, function (err, jellybean, snickers) { 
    if (err) // ... 
}); 

Il mio problema è che la dimensione della matrice è dinamica così nel callback, sarebbe utile avere un array di oggetti creati.

var array = [{ type: 'jelly bean' }, { type: 'snickers' }, ..... {type: 'N candie'}]; 
Candy.create(array, function (err, candies) { 
    if (err) // ... 

    candies.forEach(function(candy) { 
     // do some stuff with candies 
    }); 
}); 

Non nella documentazione, ma è possibile qualcosa di simile?

risposta

30

È possibile accedere alla lista variabile di parametri per la richiamata tramite arguments. Così si potrebbe fare qualcosa di simile:

Candy.create(array, function (err) { 
    if (err) // ... 

    for (var i=1; i<arguments.length; ++i) { 
     var candy = arguments[i]; 
     // do some stuff with candy 
    } 
}); 
+0

Haha, dimenticato tutto questo. Grazie mille. – lostintranslation

11

Secondo this ticket su GitHub, Mongoose 3.9 e 4.0 restituirà un array se si fornisce un array e una diffusione di argomenti se si fornisce uno spread quando si utilizza create().

0

dalla funzione di inserimento di raccolta db, esempio:

Model.collection.insert(array, function(err, list) { 
    if (err) { 
     throw err; 
    } 

    console.log("\nlist:", list); 
}); 
Problemi correlati