前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mongoose验证

mongoose验证

作者头像
Qwe7
发布于 2022-05-23 04:51:54
发布于 2022-05-23 04:51:54
2.6K00
代码可运行
举报
文章被收录于专栏:网络收集网络收集
运行总次数:0
代码可运行

5、mongoose验证

在创建集合规则时,可以设置当前字段的验证规则,验证失败就则输入插入失败。

required: true 必传字段

minlength:3 字符串最小长度

maxlength: 20 字符串最大长度

min: 2 数值最小为2

max: 100 数值最大为100

enum: [‘html’, ‘css’, ‘javascript’, ‘node.js’]

trim: true 去除字符串两边的空格

validate: 自定义验证器

default: 默认值

获取错误信息:error.errors[‘字段名称’].message

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
// 数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true})
    // 连接成功
    .then(() => console.log('数据库连接成功'))
    // 连接失败
    .catch(err => console.log(err, '数据库连接失败'));

const postSchema = new mongoose.Schema({
    title: {
        type: String,
        // 必选字段
        required: [true, '请传入文章标题'],
        // 字符串的最小长度
        minlength: [2, '文章长度不能小于2'],
        // 字符串的最大长度
        maxlength: [5, '文章长度最大不能超过5'],
        // 去除字符串两边的空格
        trim: true
    },
    age: {
        type: Number,
        // 数字的最小范围
        min: 18,
        // 数字的最大范围
        max: 100
    },
    publishDate: {
        type: Date,
        // 默认值
        default: Date.now
    },
    category: {
        type: String,
        // 枚举 列举出当前字段可以拥有的值
        enum: {
            values: ['html', 'css', 'javascript', 'node.js'],
            message: '分类名称要在一定的范围内才可以'
        }
    },
    author: {
        type: String,
        validate: {
            validator: v => {
                // 返回布尔值
                // true 验证成功
                // false 验证失败
                // v 要验证的值
                return v && v.length > 4
            },
            // 自定义错误信息
            message: '传入的值不符合验证规则'
        }
    }
});

const Post = mongoose.model('Post', postSchema);

Post.create({title:'aa', age: 60, category: 'java', author: 'bd'})
    .then(result => console.log(result))
    .catch(error => {
        // 获取错误信息对象
        const err = error.errors;
        // 循环错误信息对象
        for (var attr in err) {
            // 将错误信息打印到控制台中
            console.log(err[attr]['message']);
        }
    })

6、集合关联及实现

通常不同集合的数据之间是有关系的,例如文章信息和用户信息存储在不同集合中,但文章是某个用户发表的,要查询文章的所有信息包括发表用户,就需要用到集合关联。

使用id对集合进行关联

使用populate方法进行关联集合查询

集合关联实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 用户集合
const User = mongoose.model('User', new mongoose.Schema({ name: { type: String } })); 
// 文章集合
const Post = mongoose.model('Post', new mongoose.Schema({
    title: { type: String },
    // 使用ID将文章集合和作者集合进行关联
    author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
}));
//联合查询
Post.find()
      .populate('author')
      .then((err, result) => console.log(result));
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
// 数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true})
    // 连接成功
    .then(() => console.log('数据库连接成功'))
    // 连接失败
    .catch(err => console.log(err, '数据库连接失败'));

// 用户集合规则
const userSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    }
});
// 文章集合规则
const postSchema = new mongoose.Schema({
    title: {
        type: String
    },
    author: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }
});
// 用户集合
const User = mongoose.model('User', userSchema);
// 文章集合
const Post = mongoose.model('Post', postSchema);

// 创建用户
// User.create({name: 'itheima'}).then(result => console.log(result));
// 创建文章
// Post.create({titile: '123', author: '5c0caae2c4e4081c28439791'}).then(result => console.log(result));
Post.find().populate('author').then(result => console.log(result))

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MongoDB数据库基本操作
安装 mongodb MongoDBcompass 配置mongoose npm install mongoose node 连接数据库 const mongoose = require('mongoose');<br/> mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })<br/> .then( () => console.log('数据库连接成功'))<br/> .catch( err
用户3461357
2019/08/20
4.6K0
使用Mongoose的populate方法实现多表关联查询
MongoDB在3.2以上的版本有类似于 join 的 $lookup 聚合操作符,其实 Mongoose 有一个更强大的替代方法,叫做populate ( ),它允许你在其他集合中引用文档,实现更简洁优雅的查询操作。
越陌度阡
2020/11/26
3.9K0
使用Mongoose的populate方法实现多表关联查询
MongoDB增删改查操作
创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。
清出于兰
2022/01/05
6.5K0
MongoDB增删改查操作
MongoDB增删改查操作
创建集合分为两步,一是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。
Qwe7
2022/05/22
1.6K0
MongoDB增删改查操作
创建集合分为两步,一是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。
梨涡浅笑
2020/10/30
20.2K0
MongoDB增删改查操作
如何使用Mongoose创建一个数据处理的模块
Schema 是 Mongoose 中定义文档结构的方式。在model/index.js中定义 Schema
炑焽
2025/01/11
4381
如何使用Mongoose创建一个数据处理的模块
Mongoose模块化实践
Mongoose为操作MongoDB数据库提供了很大的方便,在实际开发过程中,为了保证可扩展与可维护性,通常会将Mongoose进行模块化,下面记录一个模块化的实例,便于在以后的项目中复用。
越陌度阡
2020/11/26
1.1K0
使用 Mongoose 基于 MongoDB 建模并设置关联
首先把 Post 和 Category 找出来,然后把分类字段改掉,最后别忘了保存。
Innei
2021/12/28
1.8K0
前后端演示SHA1,MD5加密登录(带数据库)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/j_bleach/article/details/74131038
j_bleach
2019/07/02
1.3K0
前后端演示SHA1,MD5加密登录(带数据库)
MongDB删除文档和更新文档
4、删除文档和更新文档 // 删除单个 Course.findOneAndDelete({}).then(result => console.log(result)) // 删除多个 User.deleteMany({}).then(result => console.log(result)) // 引入mongoose第三方模块 用来操作数据库 const mongoose = require('mongoose'); // 数据库连接 mongoose.connect('mongodb://loca
Qwe7
2022/05/23
3K0
MongoDB增删改查操作
创建集合分为两步,-是对对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。
星辰_大海
2020/11/04
6.9K0
MongoDB增删改查操作
【架构师(第四十篇)】 服务端开发之连接 Mongodb 数据库
创建一个 imooc_lego_course 数据库,一个 work collection。
一尾流莺
2022/12/10
1.4K0
【架构师(第四十篇)】 服务端开发之连接 Mongodb  数据库
MongoDB x Mongoose: 实现类似 Join 的功能
官方示例 其他 当前的实现全部都是基于 Mongoose 完成的 官方示例 var mongoose = require('mongoose'), Schema = mongoose.Schema var PersonSchema = new Schema({ name: String, age: Number, stories: [{ type: Schema.Types.ObjectId, ref: 'Story' }] }); var StoryS
szhshp
2022/09/21
9760
MongoDB查找文档
3、查找文档 // 根据条件查找文档(条件为空则查找所有文档) Course.find().then(result => console.log(result)) // 返回文档集合 [{ _id: 5c0917ed37ec9b03c07cf95f, name: 'node.js基础', author: 'wuyuxin‘ },{ _id: 5c09dea28acfb814980ff827, name: 'Javascript', author: 'wuyuxin‘ }]
Qwe7
2022/05/23
2.8K0
Mongoose 实现关联查询和踩坑记录
本文源自工作中的一个问题,在使用 Mongoose 做关联查询时发现使用 populate() 方法不能直接关联非 _id 之外的其它字段,在网上搜索时这块的解决方案也并不是很多,在经过一番查阅、测试之后,有两种可行的方案,使用 Mongoose 的 virtual 结合 populate 和 MongoDB 原生提供的 Aggregate 里面的 $lookup 阶段来实现。
五月君
2020/08/20
27K0
Mongoose 实现关联查询和踩坑记录
百度地图用到的geojson类型LineString文档Schema [mongoose]
代码如下: const mongoose = require('mongoose'); mongoose.connect('mongodb://127.0.0.1:81192/lets-go-brandon',{ useNewUrlParser: true, useUnifiedTopology: true }) const db = mongoose.connection; db.on('error',()=>{ console.log('***数据库连接失败***') }
周星星9527
2021/11/03
1.2K0
Nodejs学习笔记(十四)— Mongoose介绍和入门
简介   Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具   那么要使用它,首先你得装上node.js和mongodb,关于mongodb的安装和操作介绍可以参考:http://www.cnblogs.com/zhongweiv/p/node_mongodb.html   Github地址:https://github.com/Automattic/mongoose   API Docs:http://mongoosejs.com/docs/guide.html   
Porschev
2018/03/28
3K0
Nodejs学习笔记(十四)— Mongoose介绍和入门
初试MongoDB学习之Mongoose的使用
在MongoDB中,多个Document可以组成Collection(以下简称集合),多个集合又可以组成数据库。我们想要操作MongoDB数据,那就得先要具备上面所说的包含数据的“文档”,文档又是什么意思呢,请看如下介绍。
九旬
2020/10/23
6.3K0
初试MongoDB学习之Mongoose的使用
mongoose食用姿势!
Mongoose库简而言之就是对node环境中MongoDB数据库操作的封装,一种对象模型工具,可以将数据库中的数据转换为JavaScript对象供我们使用。
十月梦想
2018/08/29
1.6K0
Nodejs和Mongodb的连接器Mongoose
今天我们将学习Mongoose,什么是Mongoose呢,它于MongoDB又是什么关系呢,它可以用来做什么呢,介绍Mongoose之前,我们先简单了解一下MongoDB。
笔阁
2018/09/04
6.3K0
相关推荐
MongoDB数据库基本操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验