2014-10-13 8 views
5
var post = mongoose.Schema({ 
    ... 
    _createdOn: Date 
}); 

Chcę zezwolić na ustawienie pola _createdOn tylko po utworzeniu dokumentu i nie zezwalać na jego zmianę w przyszłych aktualizacjach. Jak to się robi w Mongoose?mangusta: zabrania aktualizowania określonych pól

+0

Zobacz http : //docs.mongodb.org/manual/reference/operator/update/setOnInsert/ – arun

Odpowiedz

9

ja osiągnąć ten efekt poprzez ustawienie _createdOn w pre schematu za Zapisz haka (tylko na pierwszy zapis):

schema.pre('save', function(next) { 
    if (!this._createdOn) { 
     this._createdOn = new Date(); 
    } 
    next(); 
}); 

... i uniemożliwienie zmiany od nigdzie indziej:

userSchema.pre('validate', function(next) { 
    if (self.isModified('_createdOn')) { 
     self.invalidate('_createdOn'); 
    } 
});