持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情 mongoose验证:
-
在创建集合规则的时候,可以设置当前字段的验证规则,验证失败就不允许插入
-
必填:required
-
字符串最小长度:minlength
-
字符串最大长度:maxlength
-
去除字符串两边的空格:trim
-
可以用数组的形式的第二个参数指定错误消息,如:
new mongoose.Schema({ name: String, age: Number, stuNo: { type: String, required: true, minlength: [2, '学号太短了'] } }) -
最小值:min
-
最大值:max
-
默认值:default
-
枚举值:enum,规定了可选值,只能从规定的这几个值里面选择
-
自定义规则:validate,范例:
new mongoose.Schema({ age: { type: Number, validate: { // 验证器,验证函数,如果想让这个验证通过,那么返回true,否则返回false validator: (v) => { // 这个v就是实际要验证的值 return v >= 18 && v <= 100 }, // 错误消息 message: '您的年龄填写错误' } } })
-
捕获mongoose错误消息:
User.create({ ... })
.then(...)
// 所有验证错误的字段信息都是以键值对的形式存储在错误对象中
.catch({ errors } => {
for (let key in errors) {
const { message } = errors[key]
console.log(message) // 错误消息
}
})
集合关联:
-
使用唯一标识id对集合进行关联,类型是:
mongoose.Schema.Types.ObjectId,需要添加ref: 集合名称属性- 注意:这个ref属性的集合名称是以内存中的集合名称为准,并不是数据库中的集合名称
-
可以使用
poppulate方法来对集合关联查询 -
范例:
const mongoose = require('mongoose') ;(async () => { // 集合规则和集合一起创建的 const User = mongoose.model('User', { name: String }, 'User') // 集合规则和集合一起创建的 const Article = mongoose.model('Article', { title: String, author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' } }, 'Article') const articleArr = await Article.find().populate('author') console.log(articleArr) })()
模板引擎:
-
模板引擎就是用来合成字符串的
-
art-template第三方模块,是腾讯公司开发的,模板的解析速度是比较快的
- 安装:
npm i art-template - 导入:
const template = require('art-template') - 调用:
const htmlStr = template('模板文件的绝对路径', { 数据键值对 }) - 模板文件可以用两对花括号来引用数据对象中的属性:
{{ 数据键名 }}
- 安装:
-
我们不一定必须用
.art的文件后缀,也可以用.html的文件 -
范例:
-
JS:
const template = require('art-template') const path = require('path') const htmlStr = template(path.join(__dirname, 'views', 'index.html'), { name: 'zs', age: 18 }) console.log(htmlStr) -
HTML:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <span>姓名:{{ name }}</span> <br> <span>年龄:{{ age }}</span> </body> </html>
-