Mongoose 是一个基于 MongoDB 的模型驱动库,它能够在 Node.js 中优雅地管理文档型数据库。在开发实际项目中,Mongoose 是一个经常用到的库,SchemaType 是其中的核心组件之一。本文将深入介绍 Mongoose SchemaType 的更多用法,帮助读者更好地了解和使用 Mongoose。
Mongoose SchemaType 简介
Mongoose 整体上是一个 ORM 库,可以将 MongoDB 数据库看成一个对象。SchemaType 是 Mongoose 中用于定义数据类型的组件,可以规定模型中的字段类型、数据验证、默认值等等。
在 Mongoose 中常用的 SchemaType 类型有以下几种:
- String
- Number
- Date
- Boolean
- Buffer
- ObjectId
- Mixed
- Array
更多的 Mongoose SchemaType 用法
Mongoose SchemaType 的验证
除了类型之外,Mongoose SchemaType 还可以用来进行数据验证。使用 validate
方法可以校验某个字段是否符合指定的条件。
以下是一个示例:
-- -------------------- ---- ------- ----- ---------- - --- ----------------- ---------- - ----- ------- --------- ----- --------- - ---------- ----------- - ------ ----------------------------- -- -------- ----- -- --------------- ------------- - -- --------- - ----- ------- --------- ---- - ---
上面的示例中,我们使用了 validate
方法,对firstName
字段的输入内容进行了验证,通过一个正则表达式来校验输入的内容是否为合法中文名字。
Enum 类型
Enum 类型是在 Mongoose 4.2 中引入的,它可以将某个字段限制在一定的范围内,取值为预定义的枚举值。这在某些场景下是非常实用的。
以下是一个示例:
-- -------------------- ---- ------- ----- --------------- - --- ----------------- ----- - ----- ------- ----- ------------- -------- ----------- --------- ---- -- ------ - ----- ------- ----- --------- -------- ------------- --------- ---- -- ------- - ----- ------- ----- --------- --------- --------- --------- ---- - ---
上面的代码中,我们定义了一个 breakfastSchema,并限制了 eggs、toast、coffee 字段的取值范围。
Mongoose SchemaType 的 Getters 和 Setters
在 Mongoose 中,SchemaType 还可以使用 Getter 和 Setter 来操作对应的字段值。Getter 和 Setter 分别是对取值和赋值执行自定义方法的机会。
以下是一个示例:
-- -------------------- ---- ------- ----- ------------ - --- ----------------- ----- - ----- ------- ---- ----------- - ------ -------------- -- ---- ----------- - ------ -------------- - - ---
在上面的示例中,我们定义了一个 PersonSchema,并在 name 字段中使用 Getter 和 Setter 来将其首字母大写。
Mongoose SchemaType 的默认值
在 Mongoose 中,可以通过 SchemaType 的 default
属性来设置默认值。
以下是一个示例:
const personSchema = new mongoose.Schema({ name: { type: String, default: 'Unknown' }, age: { type: Number, min: [0, '年龄不能小于0'], max: 120, default: 18 }, email: { type: String, default: 'example@gmail.com' }, emailVerified: { type: Boolean, default: false }, lastLoginAt: { type: Date, default: Date.now } });
在上面的示例中,我们对几个常用字段设置了默认值,比如年龄默认为 18,邮箱验证为 false 等等,可以省去一些代码中的默认值设置。
总结
本文介绍了 Mongoose SchemaType 的更多用法,包括数据验证、Enum 类型、Getter 和 Setter 以及默认值的设置,这些用法在实际项目中都有广泛的应用。希望读者能够更好地了解和掌握 Mongoose 的相关技术,进一步提高自己的开发水平。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64d32d42b5eee0b525ab2616