Saltar al contenido

Incremento automático de mangosta

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *