Mangosta crear varios documentos
Sé que en la última versión de Mongoose puede pasar varios documentos al método create, o incluso mejor en mi caso una matriz de documentos.
var array = [{ type: 'jelly bean' }, { type: 'snickers' }];
Candy.create(array, function (err, jellybean, snickers) {
if (err) // ...
});
Mi problema es que el tamaño de la matriz es dinámico, por lo que en la devolución de llamada sería útil tener una matriz de los objetos creados.
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
});
});
No está en la documentación, pero ¿es algo así posible?
4 answers
Puede acceder a la lista de variables de parámetros a su devolución de llamada a través de arguments
. Así que podrías hacer algo como:
Candy.create(array, function (err) {
if (err) // ...
for (var i=1; i<arguments.length; ++i) {
var candy = arguments[i];
// do some stuff with candy
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-14 03:23:07
De acuerdo con este ticket en GitHub, Mongoose 3.9 y 4.0 devolverán un array si proporciona un array y un spread de argumentos si proporciona un spread cuando usa create()
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-17 23:41:08
Con Mangosta v5.1.5, podemos usar el método insertMany() con el array pasado.
const array = [
{firstName: "Jelly", lastName: "Bean"},
{firstName: "John", lastName: "Doe"}
];
Model.insertMany(array)
.then(function (docs) {
response.json(docs);
})
.catch(function (err) {
response.status(500).send(err);
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-18 22:14:10
Mediante la función insertar de la colección db, ejemplo:
Model.collection.insert(array, function(err, list) {
if (err) {
throw err;
}
console.log("\nlist:", list);
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-25 15:21:17