Mongoose 是一个 Node.js 的 MongoDB 驱动程序,它提供了一种简单的方式来定义数据模型和操作 MongoDB 数据库。在 Mongoose 中,Schema 是在定义数据模型时用来描述数据结构的对象。在本文中,我们将详细介绍 Mongoose 中的 Schema 规则,包括类型、验证、默认值等方面的内容。
Schema 类型
在 Mongoose 中,Schema 支持以下数据类型:
- String
- Number
- Date
- Buffer
- Boolean
- Mixed
- ObjectId
- Array
下面是一个示例 Schema 定义:
// javascriptcn.com 代码示例 const userSchema = new mongoose.Schema({ name: String, age: Number, email: { type: String, required: true, unique: true }, createdAt: { type: Date, default: Date.now }, friends: [String], avatar: Buffer });
在上面的示例中,我们定义了一个用户模型,它包含了 name、age、email、createdAt、friends 和 avatar 属性。其中,name 和 age 的类型分别为 String 和 Number,email 的类型为 String,并且必须存在且唯一,createdAt 的类型为 Date,并且默认值为当前时间,friends 的类型为字符串数组,avatar 的类型为 Buffer。
Schema 验证
在 Mongoose 中,Schema 支持以下验证规则:
- required:字段必填。
- min/max:数字的最小/最大值。
- minlength/maxlength:字符串的最小/最大长度。
- enum:枚举值。
- match:正则表达式匹配。
- validate:自定义验证函数。
下面是一个示例:
// javascriptcn.com 代码示例 const userSchema = new mongoose.Schema({ name: { type: String, required: true, minlength: 6, maxlength: 20 }, age: { type: Number, min: 18, max: 99 }, gender: { type: String, enum: ['male', 'female'] }, email: { type: String, match: /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/ }, phone: { type: String, validate: { validator: function(v) { return /\d{3}-\d{3}-\d{4}/.test(v); }, message: props => `${props.value} is not a valid phone number!` } } });
在上面的示例中,我们定义了一个用户模型,它包含了 name、age、gender、email 和 phone 属性。其中,name 必填且长度在 6 到 20 之间,age 的值必须在 18 到 99 之间,gender 必须是 male 或 female,email 必须符合正则表达式 /^\w-.]+@([\w-]+.)+[\w-]{2,4}$/,phone 必须符合自定义验证函数中的正则表达式。
Schema 默认值
在 Mongoose 中,Schema 支持以下默认值:
- String/Number/Date:默认值为 null。
- Boolean:默认值为 false。
- ObjectId:默认值为 new ObjectId()。
- Array:默认值为 []。
下面是一个示例:
// javascriptcn.com 代码示例 const userSchema = new mongoose.Schema({ name: String, age: Number, email: String, createdAt: { type: Date, default: Date.now }, friends: { type: [String], default: ['Tom', 'Jerry'] }, isAdmin: { type: Boolean, default: false }, avatar: Buffer });
在上面的示例中,我们定义了一个用户模型,它包含了 name、age、email、createdAt、friends、isAdmin 和 avatar 属性。其中,createdAt 的默认值为当前时间,friends 的默认值为 ['Tom', 'Jerry'],isAdmin 的默认值为 false。
总结
在本文中,我们介绍了 Mongoose 中的 Schema 规则,包括类型、验证和默认值。在实际开发中,我们可以根据业务需求来定义合适的 Schema,对数据进行有效的管理和操作。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/655ecbbfd2f5e1655d8f1fd3