MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose-Fehler:__v und __v können nicht gleichzeitig aktualisiert werden

Ich schlage vor, Sie fügen _id-bezogene Löschlogik in Ihre Schema-Definitionsdatei für das Mongoose-Modell ein:

var UserSchema = new mongoose.Schema(fieldDefinitions);

// Ensure virtual fields are serialised.
UserSchema.set('toJSON', {
    virtuals: true
});

// Ensure able to see virtual fields output when using console.log(obj)
UserSchema.set('toObject', {
    virtuals: true
});

UserSchema.options.toJSON = {

    transform : function(doc, ret, options) {

        console.log('--> ' + require('util').inspect( ret._id.id ));

        ret.id = ret._id.id;
        delete ret._id;
        delete ret.__v;

        return ret;
    },
    virtuals: true
};

Führen Sie dann in Ihrem Callback toJSON :

aus
var processedJson = resultDoc.toJSON();

um die verarbeitete Version abzurufen, die wiederverwendbare Logik gut verbirgt.
HINWEIS:toJSON() wird auch auf magische Weise von JSON.stringify()

ausgeführt