乐闻世界logo
搜索文章和话题

How to validate string length with Mongoose?

6 个月前提问
5 个月前修改
浏览次数20

1个答案

1

在 Mongoose 中,验证字符串长度可以通过在模型定义中设置 minlengthmaxlength 属性来实现。Mongoose 提供了这些内置的验证器,以确保数据在保存到 MongoDB 数据库之前满足特定条件。这样有助于保持数据的一致性和质量。

示例

假设我们正在创建一个用户模型,其中包含一个用户名字段,该字段需要至少 3 个字符,最多 30 个字符。下面是如何在 Mongoose 模型中定义这个字段的示例:

javascript
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ username: { type: String, required: true, minlength: 3, maxlength: 30 }, // 可以添加其他字段 }); const User = mongoose.model('User', userSchema); const newUser = new User({ username: 'Li' }); newUser.save((err) => { if (err) { console.log('Error:', err.message); // 输出错误信息,例如 "username: Path `username` (`Li`) is shorter than the minimum allowed length (3)." } else { console.log('New user saved successfully!'); } });

在这个例子中,如果尝试保存的 username 字段长度不符合要求,则 Mongoose 会抛出一个验证错误,并且不会将数据保存到数据库。这样可以有效地前端进行数据验证,减少后端处理不必要的错误数据。

高级验证

除了简单的 minlengthmaxlength 验证外,Mongoose 还允许创建自定义验证器。如果你需要复杂的字符串验证(例如,检查字符串是否符合特定格式),你可以使用自定义验证器来实现。

javascript
userSchema.path('username').validate((value) => { // 可以添加任何自定义逻辑,例如正则表达式检验 return value.length >= 3 && RegExp('^[a-zA-Z0-9]+$').test(value); }, 'Invalid username'); const anotherUser = new User({ username: 'Tom!' }); anotherUser.save((err) => { if (err) { console.log('Error:', err.message); // 输出错误信息,例如 "Invalid username" } else { console.log('Another user saved successfully!'); } });

这个自定义验证器不仅检查长度,还检查用户名是否只包含字母和数字。

2024年6月29日 12:07 回复

你的答案