前言
Mongoose 是 MongoDB 的一个 Node.js 的 ORM 框架,使用它可以使得在 Node.js 中操作 MongoDB 数据库变得更加方便和高效。而 Model 和 Schema 也是 Mongoose 中两个重要的概念,本文将详细介绍它们的作用和使用方法,帮助小白更好地理解。
Model
Model 是 Mongoose 中最基本的操作数据的类,可以被理解为是一个高级的数据库操作 API,它提供了 CRUD 以及其他的一些常用操作,如分页查询、排序等功能。在 Mongoose 中,Model 的操作和使用都是基于 Schema 的。Model 的主要作用如下:
- 对数据库文档的增删改查进行封装,提供简洁易用的 API,方便开发者进行操作。
- 验证和处理传入的数据,确保数据的正确性和完整性。
- 对查询结果进行封装和处理,提供方便的方法进行数据处理和格式化。
- 管理数据库文档的生命周期,如文档创建、更新和删除等操作。
创建 Model
在 Mongoose 中,每个 Model 都对应一个 MongoDB 中的 Collection,要创建一个 Model,需要先定义对应的 Schema,然后使用 mongoose.model(name, schema)
方法进行创建。
-- -------------------- ---- ------- ----- -------- - -------------------- ----- ------ - ---------------- -- -- ------ ----- ---------- - --- -------- ----- ------- ---- ------- ------ ------ --- -- -- ----- ----- --------- - ---------------------- ------------
在这个例子中,我们创建了名为 User
的 Model,它对应的是 MongoDB 中的 users
集合。用户数据的字段包括 name
、age
和 email
,分别对应的类型是 String
、Number
和 String
。
使用 Model 进行数据操作
通过 Model,我们可以方便地进行 CRUD 操作。下面的代码展示了如何使用 Model 进行数据增删改查操作。
-- -------------------- ---- ------- -- ---- ----- ---- - --- ----------- ----- ------ ---- --- ------ ----------------- --- --------------- ---- -- - -- ----- - ------------------- - ---- - ----------------- - --- -- ---- ---------------- ----- ----- -- ----- ----- -- - -- ----- - ------------------- - ---- - ------------------ - --- -- ---- --------------------- ----- ----- -- - ---- -- -- ----- ---- -- - -- ----- - ------------------- - ---- - ----------------- - --- -- ---- --------------------- ----- ----- -- ----- -- - -- ----- - ------------------- - ---- - ----------------------- - ---
在这个例子中,我们使用了 save()
、find()
、updateOne()
和 deleteOne()
等 Model 方法进行了数据操作。
Schema
Schema 是定义 Model 中数据结构的一种方式,它使用了一种类似于 JSON 的格式来定义数据结构,包括字段名称、类型、默认值、验证规则等信息。Schema 的主要作用如下:
- 定义数据结构,包括字段名称、类型、默认值、验证规则等信息。
- 管理数据的修改、验证等操作。
- 提供对数据的读取和获取等操作。
定义 Schema
下面的代码展示了如何定义一个包含 name
、age
和 email
字段的 User Schema。
const mongoose = require('mongoose'); const Schema = mongoose.Schema; const userSchema = new Schema({ name: String, age: Number, email: String });
在这个例子中,我们定义了一个包含 name
、age
和 email
字段的 Schema,每个字段的类型分别为 String
、Number
和 String
。
字段属性
在 Schema 中,字段不仅可以设置基本的类型,还可以设置一些属性来确保数据的完整性和正确性。下面是几个常用的字段属性。
required
用来指定该字段是否为必需字段。
const userSchema = new Schema({ name: { type: String, required: true }, });
在这个例子中,我们指定了 name
字段必须有值,否则在保存数据时会抛出错误。
default
用来指定该字段的默认值。
const userSchema = new Schema({ age: { type: Number, default: 18 }, });
在这个例子中,我们指定了 age
字段的默认值为 18,如果没有为该字段指定具体值,在保存数据时将会默认为 18。
unique
用来指定该字段是否唯一。
const userSchema = new Schema({ email: { type: String, unique: true }, });
在这个例子中,我们指定了 email
字段必须是唯一的,如果在保存数据时出现了重复的 email
,将会抛出错误。
验证数据
除了基本的字段类型和属性外,Schema 还提供了一些验证规则,用来确保数据的正确性和完整性。
-- -------------------- ---- ------- ----- ---------- - --- -------- ----- - ----- ------- --------- ----- ---------- -- ---------- -- -- ---- - ----- ------- ---- -- ---- --- -- ------ - ----- ------- ------ -------------- - ---
在这个例子中,我们使用了 minlength
、maxlength
、min
、max
和 match
等验证规则,分别用来验证 name
、age
和 email
字段的数据。
总结
Model 和 Schema 是 Mongoose 中两个重要的概念,Model 提供了对数据库的 CRUD 操作,Schema 定义了数据结构和验证规则。使用 Model 和 Schema 可以方便地操作 MongoDB 数据库,让开发工作变得更加高效和便捷。希望本文能够帮助小白更好地理解 Model 和 Schema 在 Mongoose 中的使用方法,为日后的开发工作带来帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64659506968c7c53b0641cc7