2013-03-14 15 views
19

Ich weiß in der neuesten Version von Mongoose können Sie mehrere Dokumente an die create-Methode übergeben, oder noch besser in meinem Fall eine Reihe von Dokumenten.Mongoose erstellen mehrere Dokumente

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

Mein Problem ist, dass die Größe des Arrays dynamisch ist so in dem Rückruf es wäre hilfreich, ein Array der erzeugten Objekte zu haben.

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 
    }); 
}); 

Nicht in der Dokumentation, aber ist so etwas möglich?

Antwort

30

Sie können die Variablenliste der Parameter zu Ihrem Rückruf über arguments aufrufen. So könnte man so etwas wie:

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, das ganz vergessen. Vielen Dank. – lostintranslation

11

Nach this ticket auf GitHub, Mongoose 3.9 und 4.0 wird ein Array zurück, wenn Sie ein Array und eine Ausbreitung der Argumente liefern, wenn Sie eine Ausbreitung liefern, wenn create() verwenden.

0

durch Insert-Funktion von Sammel db, Beispiel:

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

    console.log("\nlist:", list); 
}); 
Verwandte Themen