在进行任何类型的验证之前,我需要在MongooseJS中清理一个字符串。如何访问模型的字段并更改(清理)字段,然后才能对字段进行验证?
例如,这就是我的模型:
var NotificationSchema = new Schema({
topic: { type: String, required: true }
});
我想要清除topic
(从中移除任何空格字符)。完成之后,我想检查topic
是否最少2个字符,最多60个字符。
简单地说,我希望首先清理主题。
答案 0 :(得分:1)
如果您只想验证已转换的数据,可以使用自定义验证。 http://mongoosejs.com/docs/validation.html
var NotificationSchema = new Schema({
topic: { type: String, required: true }
});
NotificationSchema.schema.path('topic').validate(function (value) {
value = value.replace(/\s/g, '');
if (value.length > 1 && value.length < 61)
return true;
return false;
}, 'Invalid length');
如果您还想保存转换后的数据,可以使用预保存挂钩进行转换。您仍然需要进行自定义验证,因为Mongoose没有内置的字符串长度支持。请参阅此处了解中间件文档:http://mongoosejs.com/docs/middleware.html
var NotificationSchema = new Schema({
topic: { type: String, required: true }
});
NotificationSchema.pre('validate', function(next) {
this.topic = this.topic.replace(/\s/g, '');
next();
});
NotificationSchema.schema.path('topic').validate(function (value) {
if (value.length > 1 && value.length < 61)
return true;
return false;
}, 'Invalid length');