什么是 Mongoose Schema?
Mongoose 是一个 Node.js 的框架,它提供了一种操作 MongoDB 数据库的方式。而 Mongoose Schema 就是用来描述 MongoDB 数据库中一个集合的结构的。
Mongoose Schema 可以让我们定义一个模式,模式里面可以包含属性的类型、验证规则、默认值等信息。这样就能在往数据库中插入数据时,对数据进行校验和格式化,防止数据混乱和格式错误。
如何定义 Mongoose Schema?
首先,需要在项目中引入 Mongoose 模块。
const mongoose = require('mongoose');
然后,就可以定义一个 Mongoose Schema 了。
-- -------------------- ---- ------- ----- ------ - ---------------- ----- ---------- - --- -------- ----- ------- ---- ------- ------ - ----- ------- --------- ----- ------- ---- - ---展开代码
上面的代码定义了一个 UserSchema,它有三个属性,分别是 name、age 和 email。name 和 age 的类型分别为 String 和 Number,email 带有验证规则,表示这个属性是必填的,并且不能重复。
Mongoose Schema 的数据类型
Mongoose Schema 的数据类型包括:
- String:字符串类型
- Number:数字类型
- Date:日期类型
- Boolean:布尔类型
- ObjectId:对象 ID 类型
- Mixed:混合类型
- Buffer:二进制类型
还可以使用数组来定义一个属性是数组类型的。例如:
const BlogSchema = new Schema({ title: String, content: String, tags: [String] })
Mongoose Schema 的验证规则
Mongoose Schema 的验证规则有很多种,可以验证属性是否必填、是否唯一、长度、正则表达式等。以下是常用的验证规则:
- required:表示该属性必填
- unique:表示该属性值不能重复
- min/max:表示该属性的数字范围
- minlength/maxlength:表示该属性的字符串长度范围
- match:表示该属性需要符合正则表达式
例如:
const UserSchema = new Schema({ email: { type: String, required: true, unique: true, match: /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/ } });
以上表示 email 属性必填,不能重复,而且必须符合电子邮件地址格式。
Mongoose Schema 的钩子
Mongoose Schema 的钩子(Hooks)可以让我们在某些操作之前或之后添加一些额外的逻辑。
常用的钩子有 pre-save、post-save、pre-remove 等,在进行相应操作前或之后会调用对应的钩子函数。
例如:
-- -------------------- ---- ------- ----- ---------- - --- -------- ----- ------- ---- ------ --- ---------------------- -------------- - -- --- ---------- ------ ------- ---展开代码
以上代码表示,在保存 UserSchema 之前会调用 pre-save 钩子函数。
Mongoose Model
Mongoose Schema 只是用来描述 MongoDB 数据库中一个集合的结构,而 Mongoose Model 则是用来操作集合的。
我们可以使用 Mongoose Model 来插入、查询、删除和更新 MongoDB 数据库中的数据。
例如,我们可以通过以下方式创建一个 User 模型:
const User = mongoose.model('User', UserSchema);
然后就可以使用这个模型对 MongoDB 数据库进行操作了:
-- -------------------- ---- ------- ----- ---- - --- ------ ----- -------- ---- --- ------ ------------------- --- --------------- ------- -- - -- ----- - ------------------- - ---- - -------------------- - ---展开代码
以上代码表示插入一条 User 记录,并检查是否保存成功。
总结
Mongoose Schema 提供了一种很方便的方式来描述 MongoDB 数据库中集合的结构和定义验证规则,使得在往数据库中插入数据时,数据能够被有效校验和格式化。同时,Mongoose Model 还提供了一些方便的接口能够操作数据库中的数据。
使用 Mongoose Schema 可以让我们编写的代码更具可读性、可维护性,能够更好地满足项目的需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e18913f6b2d6eab3cb54c4