Mar*_*ark 5 javascript mongoose mongodb node.js
我使用的是 Monggose 4.8.1。我有一个简单的架构:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Organisation = new mongoose.Schema({
name: {
type: String,
required: [true, 'Organisation name must be provided'],
unique: [true, 'Organisation name must be unique']
},
createdBy: {
type: String,
ref: 'User'
},
createdOn: {
type: Date,
"default": Date.now
},
availableUntil: {
type: Date
}
});
mongoose.model('Organisation', Organisation);
Run Code Online (Sandbox Code Playgroud)
我已将电子邮件 email@domain.com 保存在文档中。
现在我想再次尝试保存它并首先检查它是否有效使用validateAsync. 所以我预计会收到错误,因为电子邮件不是唯一的。
var organisation = new Organisation({
name: 'email@domain.com'
});
var validResult = organisation.validateSync();
console.log('validResult is ', validResult);
Run Code Online (Sandbox Code Playgroud)
但 validResult 总是undefined...
编辑
我向我的架构添加了一个额外的属性:
eggs: {
type: Number,
min: [6, 'Too few eggs'],
max: 12
}
Run Code Online (Sandbox Code Playgroud)
然后尝试保存eggs: 3,这产生了错误。奇怪的是,猫鼬验证似乎不会检查值是否唯一,即使在模式中设置时也是如此......
标记。
您能否验证 mongodb 是否有您保存的模型的记录:db.organisations.find()?
看起来如果您有价值,undefined则意味着该文档已按照以下文档通过了验证步骤validateSync():
var err = doc.validateSync();
if ( err ){
handleError( err );
} else {
// validation passed
}
Run Code Online (Sandbox Code Playgroud)