Mongoose 是一种 Node.js 的库,用于在 MongoDB 数据库中进行对象建模。它提供了一种简单的方法,可以在 Node.js 中定义和操作 MongoDB 数据库中的数据。Mongoose Schema 是 Mongoose 中最重要的概念之一,它定义了 MongoDB 数据库中的数据类型。
在 Mongoose 中,Schema 是一个对象,它定义了集合中的属性和它们的数据类型。Schema 可以包含字符串、数字、日期等数据类型,也可以包含其他 Schema 对象。在定义 Schema 时,还可以指定属性的默认值、验证规则和其他选项。
数据类型
Mongoose Schema 中支持的数据类型包括:
- String:字符串类型
- Number:数字类型
- Date:日期类型
- Buffer:二进制数据类型
- Boolean:布尔类型
- Mixed:混合类型
- ObjectId:MongoDB 的 ObjectId 类型
- Array:数组类型
下面是一个示例 Schema,它定义了一个名为 User 的集合,并包含了三个属性:name、email 和 age。
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ name: String, email: String, age: Number });
默认值
在 Mongoose Schema 中,可以为属性设置默认值。当创建一个新的文档时,如果没有为属性指定值,则会自动使用默认值。
// javascriptcn.com 代码示例 const userSchema = new Schema({ name: { type: String, default: 'unknown' }, email: String, age: { type: Number, default: 18 } });
验证规则
Mongoose Schema 还支持验证规则,可以用于验证文档中的属性。可以使用内置的验证规则,也可以自定义验证规则。
// javascriptcn.com 代码示例 const userSchema = new Schema({ name: { type: String, required: true }, email: { type: String, required: true, unique: true }, age: { type: Number, min: 18, max: 99 } });
上面的示例中,name 和 email 属性都是必需的,且 email 属性必须唯一。age 属性必须在 18 到 99 之间。
指定引用
在 Mongoose Schema 中,可以使用 ref 属性将一个集合与另一个集合关联起来。例如,如果我们有一个名为 Book 的集合,它包含一个 author 属性,我们可以将 author 属性设置为 User 集合的 ObjectId 类型,并将其引用到 User 集合。
const bookSchema = new Schema({ title: String, author: { type: Schema.Types.ObjectId, ref: 'User' } });
上面的示例中,author 属性是一个 ObjectId 类型,它引用了 User 集合中的文档。
总结
Mongoose Schema 是 Mongoose 中最重要的概念之一,它定义了 MongoDB 数据库中的数据类型。在定义 Schema 时,可以指定属性的数据类型、默认值、验证规则和其他选项。在实际开发中,我们需要根据具体需求来定义 Schema,以确保数据类型的正确性和数据的完整性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/650958db95b1f8cacd4146f0