2012-10-17 42 views
2

有沒有任何方法可以標記一個字段爲未在貓鼬中修改?Mongoose.js永不保存字段通過集

我有一個貓鼬模式:

var schema = mongoose.Schema({ 
    field   : { type : String } 
    , fieldGenerated : { type : [String] } 
}); 

我想要讓這個fieldGenerated永遠不會通過model.set(...)設置。

應當設置的唯一方法是在預存中間件:

schema.pre('save', function(next) { 

    // Any way to mark fieldGenerated as NOT modified here? 

    // I only want to set fieldGenerated if field was set. 
    // I don't want fieldGenerated to be set any other way. 
    if (this.field && this.isModified('field')) { 
     this.fieldGenerated = this.field.split(' '); 
     this.markModified('fieldGenerated'); 
    } 

    next(); 
} 

有沒有辦法做到這一點?

回答

0

不是直接的,但怎麼樣,如果你只是再生領域,如果它被修改:

schema.pre('save', function(next) { 
    if (this.field && (this.isModified('field') || this.isModified('fieldGenerated')) { 
     this.fieldGenerated = this.field.split(' '); 
    } 
    next(); 
} 
+0

這是一個很好的解決方法,但它需要額外的處理再生領域時,它是沒有必要的。如果產生該領域不便宜,這是不可接受的。 – alphus