简介
Mongoose 是一个非常流行的 Node.js ORM 库,它提供了许多方便的功能来操作 MongoDB 数据库。其中 Schema 是一个重要的概念,它定义了 MongoDB 中的集合的结构,包括每个文档中的字段名称、类型、默认值等信息。在这篇文章中,我们将深入了解 Mongoose 的 Schema 规则,包括常用的数据类型、验证器等。
常用数据类型
Mongoose 内置了许多常用的数据类型,以下是常用的数据类型及其说明:
- String:字符串类型
- Number:数字类型
- Date:日期类型
- Buffer:二进制数据类型
- Boolean:布尔类型
- Mixed:混合类型,可以用来存储任意数据类型
- ObjectId:MongoDB ObjectId 类型
- Array:数组类型
以下是使用 Mongoose 创建一个简单的 Schema 的示例:
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------ - ---------------- ----- ---------- - --- -------- ----- ------- ---- ------- ------ - ----- ------- ------- ---- -- ---- -- ---------- ----- --------- - ----- -------- -------- ----- -- ----- -- ------- ------- ----- --------- --- ----- ---- - ---------------------- ------------ -- --------- ----- ---- - --- ------ ----- ------ ---- --- ------ ------------------ ---------- --- ------- ------- -------------------------- ----- -------- -------- --- -----------
详细说明
String 类型
定义一个字符串类型的字段:
const userSchema = new Schema({ name: String, email: { type: String, unique: true // 邮箱唯一 } })
String 类型的字段包含以下属性:
- type:类型为字符串。
- minlength:最小长度。
- maxlength:最大长度。
- match:正则表达式,用来验证字符串。
- enum:数组,用来限制字符串的值。
使用示例:
-- -------------------- ---- ------- ----- ---------- - --- -------- ----- - ----- ------- ---------- -- -- ------ ---------- --- -- ------- -- ------ - ----- ------- ------- ----- ------ ----------------------------------------------------- -- ------ -- ------- - ----- ------- ----- -------- ---------- -- ---- ---- - ------ -- --
Number 类型
定义一个数字类型的字段:
const userSchema = new Schema({ age: Number, salary: { type: Number, min: 0, // 最小值为0 max: 100000, // 最大值为100000 }, })
Number 类型的字段包含以下属性:
- type:类型为数字。
- min:最小值。
- max:最大值。
Date 类型
定义一个日期类型的字段:
const userSchema = new Schema({ createdAt: Date, updatedAt: { type: Date, default: Date.now, // 默认值为当前时间 }, })
Date 类型的字段包含以下属性:
- type:类型为日期。
- default:默认值。
Buffer 类型
定义一个二进制数据类型的字段:
const userSchema = new Schema({ avatar: Buffer, })
Boolean 类型
定义一个布尔类型的字段:
const userSchema = new Schema({ isActive: { type: Boolean, default: false, // 默认值为false }, })
Boolean 类型的字段包含以下属性:
- type:类型为布尔。
- default:默认值。
Mixed 类型
定义一个混合类型的字段:
const userSchema = new Schema({ data: Schema.Types.Mixed, })
Mixed 类型的字段可以存储任意类型的数据。
ObjectId 类型
定义一个 MongoDB ObjectId 类型的字段:
const userSchema = new Schema({ _id: Schema.Types.ObjectId, postId: { type: Schema.Types.ObjectId, ref: 'Post', // 关联 Post 集合 }, })
ObjectId 类型的字段可以用来存储 MongoDB 的 ObjectId。
Array 类型
定义一个数组类型的字段:
const userSchema = new Schema({ tags: [String], scores: [{ type: Number, min: 0, max: 100, }], })
Array 类型的字段包含以下属性:
- type:类型为数组。
- minlength:最小长度。
- maxlength:最大长度。
- validate:自定义验证器。
使用示例:
-- -------------------- ---- ------- ----- ---------- - --- -------- ----- - ----- --------- ---------- -- -- ------ --------- - ---------- -------- ------- - ------ --------------- -- ---------- -- --- -- ------------ -- -------- ---------------- - -- ------- - ----- -- ----- ------- ---- -- ---- ---- --- --------- - ---------- -------- ------- - ------ ------------ --- -- -- -------- -- -------- ----------- - -- --
结论
在这篇文章中,我们学习了 Mongoose 的 Schema 规则,包括常见的数据类型、验证器等。一个合理的 Schema 可以为 MongoDB 中的集合提供良好的结构定义,使得数据处理变得更加方便和有条理。在实际开发中,我们需要根据具体需求来选择合适的数据类型和验证器,从而构建优秀的数据模型。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66ffa18a1b0bf82c71cd47e0