2017-05-24 58 views
1

我有以下模式:如何以編程方式填充Mongoose模型字段?

const geoframeSchema = mongoose.Schema({ 
    count: Number, 
    createdBy: String, 
    polygons: [ 
    { 
     points: [{ lat: Number, lng: Number }], 
    }, 
    ], 
}); 

我想以某種方式有另一場,createdAt,其中填充使用doc._id.getTimestamp()。這樣,我不必在每次用戶查詢此集合時都注入該值。我將如何實現這一目標?

+0

看看這裏:https://stackoverflow.com/questions/12669615/添加創建和更新的字段到貓鼬模式 –

回答

0

你可以使用預先保存鉤:

const geoframeSchema = mongoose.Schema({ 
    count: Number, 
    createdBy: String, 
    createdAt: Date, 
    polygons: [ 
     { 
      points: [{ lat: Number, lng: Number }], 
     }, 
    ], 
}); 

geoframeSchema.pre('save', function() { 
    this.createdAt = doc._id.getTimestamp(); 
}); 

你必須確保doc._id.getTimestamp()是從架構訪問或將其設置爲一個實例方法:

geoframeSchema.methods.getTimestamp = function() { 
    ... 
} 

...然後調用它在你的預存鉤:

geoframeSchema.pre('save', function() { 
    this.createdAt = this.getTimestamp(); 
}); 

在這種情況下,你也可以使用模式Ø ptions反對設立時間戳,它會自動填充:

const geoframeSchema = mongoose.Schema({ 
    count: Number, 
    createdBy: String, 
    polygons: [ 
     { 
      points: [{ lat: Number, lng: Number }], 
     }, 
    ], 
}, { 
    timestamps: { 
     createdAt: 'createdAt', 
     updatedAt: 'updatedAt' 
    } 
}); 

您可以命名您的時間戳,像這樣:

createdAt: 'timestampName' 
+0

時間戳,內置!沒有意識到這一點..謝謝! – ffxsam

相關問題