gpt4 book ai didi

javascript - MongooseJS 在进行任何验证之前清理字符串

转载 作者:行者123 更新时间:2023-12-03 09:05:53 25 4
gpt4 key购买 nike

在进行任何类型的验证之前,我需要清理 MongooseJS 中的字符串。如何访问模型的字段并更改(清理)该字段,然后才对该字段进行验证?

例如,这就是我的模型的样子:

var NotificationSchema = new Schema({
topic: { type: String, required: true }
});

我想清理主题(从中删除所有空白字符)。完成后,我想检查 topic 是否最少 2 个字符,最多 60 个字符。

简单地说,我希望首先清理主题。

最佳答案

如果您只想验证转换后的数据,您可以使用自定义验证。 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');

如果您还想保存转换后的数据,您可以使用预保存 Hook 来进行转换。您仍然需要进行自定义验证,因为 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');

关于javascript - MongooseJS 在进行任何验证之前清理字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32186198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com