use*_*933 6 mongoose mongodb node.js
我试图在空字段中设置一个默认值,以便将文档保存在MongoDB中
在我的例子中,这是mongoose模式
var Distribution = new Schema({
temporalCoverage: {
startDate: {type: Date, default: Date.now},
endDate: {type: Date, default: Date.now}
},
distributionText: String
});
Run Code Online (Sandbox Code Playgroud)
这是要保存的文件:
"distribution": {
"temporalCoverage": {
"endDate": "",
"startDate": ""
},
"distributionText": "test"
}
Run Code Online (Sandbox Code Playgroud)
在本文档中,空字段为endDate和startDate.该文档以空值保存在mongoDB中.
"distribution": {
"temporalCoverage": {
"endDate": null,
"startDate": null
},
"distributionText": "test"
}
Run Code Online (Sandbox Code Playgroud)
我想保存默认值,而不是null
如果在模式中放置所需的字段,temporalCoverage : { startDate : { type: Date, required: true, default: Date.now }, endDate : { type: Date, required: true, default: Date.now } }我会得到错误验证,并且文档没有保存.
你需要这个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 = {
// 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');
});
Run Code Online (Sandbox Code Playgroud)
请参阅http://mongoosejs.com/docs/defaults.html
| 归档时间: |
|
| 查看次数: |
7669 次 |
| 最近记录: |