Mongoose:当文件不存在时,在必填字段中设置默认值

我试图设置一个默认值在一个空的字段中保存在MongoDB中的文档

就我而言,这是mongoose模式

var Distribution = new Schema({ temporalCoverage : { startDate : { type: Date, default: Date.now }, endDate : { type: Date, default: Date.now } }, distributionText : String }); 

这是要保存的文件:

 "distribution": { "temporalCoverage": { "endDate": "", "startDate": "" }, "distributionText": "test" } 

在这个文档中,空字段是endDate和startDate。 该文档保存在mongoDB中,为空值。

 "distribution": { "temporalCoverage": { "endDate": null, "startDate": null }, "distributionText": "test" } 

我想保存默认值,不是null

temporalCoverage : { startDate : { type: Date, required: true, default: Date.now }, endDate : { type: Date, required: true, default: Date.now } }如果放置模式中所需的字段,得到错误validation,并且文档没有保存。

你需要setDefaultsOnInsert选项

 var schema = new Schema({ title: String, genre: {type: String, default: 'Action'} }); var Movie = db.model('Movie', schema); var query = {}; var update = {title: 'The Terminator'}; var options = { // Return the document after updates are applied new: true, // Create a document if one isn't found. Required // for `setDefaultsOnInsert` upsert: true, setDefaultsOnInsert: true }; Movie. findOneAndUpdate(query, update, options, function (error, doc) { assert.ifError(error); assert.equal(doc.title, 'The Terminator'); assert.equal(doc.genre, 'Action'); }); 

请参阅http://mongoosejs.com/docs/defaults.html