No dejes de compartir nuestra web y códigos en tus redes, danos de tu ayuda para hacer crecer esta comunidad.
Solución:
Aquí hay un ejemplo de cómo puede implementar un campo de incremento automático en Mongoose:
var CounterSchema = Schema(
_id: type: String, required: true,
seq: type: Number, default: 0
);
var counter = mongoose.model('counter', CounterSchema);
var entitySchema = mongoose.Schema(
testvalue: type: String
);
entitySchema.pre('save', function(next)
var doc = this;
counter.findByIdAndUpdate(_id: 'entityId', $inc: seq: 1 , function(error, counter)
if(error)
return next(error);
doc.testvalue = counter.seq;
next();
);
);
Puedes usar mongoose-auto-increment
paquete de la siguiente manera:
var mongoose = require('mongoose');
var autoIncrement = require('mongoose-auto-increment');
/* connect to your database here */
/* define your CounterSchema here */
autoIncrement.initialize(mongoose.connection);
CounterSchema.plugin(autoIncrement.plugin, 'Counter');
var Counter = mongoose.model('Counter', CounterSchema);
Solo necesita inicializar el autoIncrement
una vez.
La respuesta más votada no funciona. Esta es la solución:
var CounterSchema = new mongoose.Schema(
_id: type: String, required: true,
seq: type: Number, default: 0
);
var counter = mongoose.model('counter', CounterSchema);
var entitySchema = mongoose.Schema(
sort: type: String
);
entitySchema.pre('save', function(next)
var doc = this;
counter.findByIdAndUpdateAsync(_id: 'entityId', $inc: seq: 1 , new: true, upsert: true).then(function(count)
console.log("...count: "+JSON.stringify(count));
doc.sort = count.seq;
next();
)
.catch(function(error)
console.error("counter error-> : "+error);
throw error;
);
);
los opciones parámetros le da el resultado de la actualización y crea un nuevo documento si no existe. Puedes consultar aquí el documento oficial.
Y si necesita un índice ordenado, consulte este documento
Comentarios y calificaciones
Si para ti ha sido de ayuda nuestro post, sería de mucha ayuda si lo compartieras con el resto desarrolladores de este modo contrubuyes a extender nuestro contenido.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)