我使用的是 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);
我已将电子邮件 email@domain.com 保存在文档中。
现在我想再次尝试保存它,并首先使用 validateAsync
检查其是否有效。所以我预计会收到错误,因为电子邮件不是唯一的。
var organisation = new Organisation({
name: 'email@domain.com'
});
var validResult = organisation.validateSync();
console.log('validResult is ', validResult);
但 validResult 始终是未定义
...
编辑
我向我的架构添加了一个额外的属性:
eggs: {
type: Number,
min: [6, 'Too few eggs'],
max: 12
}
然后尝试保存eggs: 3
,这产生了错误。奇怪的是, Mongoose 验证似乎不会检查值是否唯一,即使在模式中设置时也是如此......
最佳答案
标记。
您能否验证 mongodb 是否有您保存的模型的记录:db.organizations.find()
?
看起来,如果您有 undefined
值,则意味着文档已按照 validateSync()
的文档通过了验证步骤:
var err = doc.validateSync();
if ( err ){
handleError( err );
} else {
// validation passed
}
关于javascript - Mongoose 验证不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42087450/