猫鼬模式设置字符串的最大长度[重复]
Posted
技术标签:
【中文标题】猫鼬模式设置字符串的最大长度[重复]【英文标题】:mongoose schema set max length for a String [duplicate] 【发布时间】:2015-05-03 23:49:19 【问题描述】:我在 Nodejs 中用猫鼬做一个模式。我正在尝试找到一种方法来限制SchemaString 中的字符数。我发现可以使用带有关键字 match 的正则表达式,例如:
var schema = new Schema(
name: type: String, match: '/^.0,20$/'
);
但我只是想知道是否有一些参数可以直接指定最大长度,像这样:
var schema = new Schema(
name: type: String, max: 20
);
感谢您的帮助。
【问题讨论】:
maxlength
应该在Mongoose release 4.0.0-rc2
为什么不对输入而不是服务器做限制呢?这会容易得多......我想?
最小和最大工作mongoosejs.com/docs/validation.html
【参考方案1】:
由于 Mongoose 4.0.0-rc2,maxLength
验证可用:
var Schema = new mongoose.Schema(
name: type: String, required: true, maxLength: 20
);
对于早于 4.0.0-rc2 的版本,内置了 is no such validation。
但是,您可以使用路径函数创建此验证:
Schema.path('name').validate(function (v)
return v.length <= 20;
, 'The maximum length is 20.');
或者您可以使用mongoose-validator。从他们的自述文件中的示例:
var mongoose = require('mongoose');
var validate = require('mongoose-validator');
var nameValidator = [
validate(
validator: 'isLength',
arguments: [3, 50],
message: 'Name should be between 3 and 50 characters'
),
validate(
validator: 'isAlphanumeric',
passIfEmpty: true,
message: 'Name should contain alpha-numeric characters only'
)
];
var Schema = new mongoose.Schema(
name: type: String, required: true, validate: nameValidator
);
【讨论】:
顺便说一句,现在有长度验证:mongoosejs.com/docs/schematypes.html 例如名称:类型:字符串,最大长度:100以上是关于猫鼬模式设置字符串的最大长度[重复]的主要内容,如果未能解决你的问题,请参考以下文章