乐闻世界logo
搜索文章和话题

Mongoose Schema 是什么,如何定义和使用?

2月22日 20:12

Mongoose Schema(模式)是 Mongoose 的核心概念,用于定义 MongoDB 文档的结构、数据类型、验证规则和默认值。Schema 本身不是数据库中的集合,而是一个蓝图,用于创建 Model。

Schema 的基本定义

javascript
const mongoose = require('mongoose'); const { Schema } = mongoose; const userSchema = new Schema({ name: { type: String, required: true, trim: true }, email: { type: String, required: true, unique: true, lowercase: true, trim: true }, age: { type: Number, min: 0, max: 120 }, createdAt: { type: Date, default: Date.now } });

Schema 的主要属性

  1. 字段类型:String、Number、Date、Buffer、Boolean、Mixed、ObjectId、Array
  2. 验证器:required、min、max、enum、match、validate
  3. 修饰符:lowercase、uppercase、trim、default
  4. 索引:unique、sparse、index
  5. 虚拟字段:不存储在数据库中的计算字段
  6. 实例方法:添加到文档实例的方法
  7. 静态方法:添加到模型类的方法
  8. 中间件:pre 和 post 钩子

Schema 与 Model 的关系

  • Schema 是定义,Model 是构造函数
  • 通过 mongoose.model('User', userSchema) 创建 Model
  • Model 的实例是 Document,代表数据库中的实际文档
  • 一个 Schema 可以创建多个 Model(不推荐)

Schema 的优势

  1. 数据一致性:强制文档结构一致
  2. 数据验证:在应用层验证数据
  3. 类型安全:提供类型检查和转换
  4. 中间件支持:可以在操作前后执行逻辑
  5. 可扩展性:可以添加方法和虚拟字段
标签:Mongoose