在 Node.js 后端开发中,使用 Mongoose 作为 MongoDB 的 ORM 工具,能够快速便捷地进行数据的增删改查操作。然而,Mongoose 中最为基础的操作便是对数据模型的创建和使用,因此本文将为读者介绍 Mongoose 模型的创建和使用,包括如何建立模型、定义模型的属性、校验以及如何在项目中使用模型进行数据操作。
Mongoose 模型的创建
在 Mongoose 中,每个数据模型都与一个集合(collection)关联,因此创建模型需要指定其所关联的集合名称以及该集合所包含的文档(document)的具体结构。在 Mongoose 中,数据模型的创建大致分为以下三个步骤:
- 连接 MongoDB 数据库
const mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/myproject', { useNewUrlParser: true, useUnifiedTopology: true })
- 定义数据模型
-- -------------------- ---- ------- ----- ------ - --------------- ----- ---------- - --- -------- --------- - ----- ------- --------- ---- -- ---- ------- ------ - ----- ------- --------- ----- ------- ---- -- --------- - ----- ------- --------- ---- - --
- 将模型与数据库中的集合关联
module.exports = mongoose.model('User', userSchema)
上述代码中,Schema
用于定义数据模型的结构,其中 userSchema
定义了一个基本的用户数据模型,包含 username
、age
、email
和 password
四个属性。在每个属性的定义中,都可以使用 Mongoose 提供的各种数据类型进行定义,并且可以使用多个内置的验证器对数据进行验证,例如 required
、unique
等。
最后,使用 mongoose.model
将模型与数据库中的集合进行关联,在 module.exports
中导出模型,以便在项目中可以使用该模型进行数据操作。
Mongoose 模型的使用
在 Mongoose 中,模型的使用主要包括数据的增删改查以及数据验证等。下面我们将分别介绍具体的使用方法。
数据的增加
在 Mongoose 中,可以通过以下方式向数据库中添加新的文档:
const User = require('./models/user') const user = new User({ username: 'test', age: 18, email: 'test@example.com', password: '123456' }) user.save()
其中,通过 require
引入 User
模型,然后创建一个新的文档 user
,将其存储到数据库中。注意,在调用 save
方法之前,需要对数据进行验证是否符合要求。此时,Mongoose 内置的验证器会自动进行验证,如果数据不符合定义的规则将会抛出相应的错误。
数据的查询
在 Mongoose 中,可以通过以下方式进行数据的查询:
-- -------------------- ---- ------- ----- ---- - ------------------------ -- ------ ------------- ----- ------ -- - -- ----- ---------------- ------------------ -- -- -------- ----------- --------- ------ -- ----- ------ -- - -- ----- ---------------- ------------------ --
find
方法可以接收一个查询条件作为参数,并返回匹配该条件的所有文档。当查询条件为空对象 {}
时,返回所有文档。
数据的更新
在 Mongoose 中,可以通过以下方式更新数据库中的文档:
-- -------------------- ---- ------- ----- ---- - ------------------------ -- ------ ----------------------- --------- ------ -- - ---- -- -- - ---- ---- -- ----- ----- -- - -- ----- ---------------- ----------------- -- -- ------ ----------------- ---- -- -- - ----- - ------ ----------------- - -- ----- ------- -- - -- ----- ---------------- ------------------- --
findOneAndUpdate
方法可以根据查询条件查找到一个文档,并更新其属性值。updateMany
方法可以更新符合条件的所有文档的属性值。
数据的删除
在 Mongoose 中,可以通过以下方式删除数据库中的文档:
-- -------------------- ---- ------- ----- ---- - ------------------------ -- ------ ----------------------- --------- ------ -- ----- ----- -- - -- ----- ---------------- ----------------- -- -- ------ ----------------- ---- -- -- ----- ------- -- - -- ----- ---------------- ------------------- --
findOneAndDelete
方法可以根据查询条件查找到一个文档,并将其删除。deleteMany
方法可以删除符合条件的所有文档。
数据的验证
在 Mongoose 中,可以使用各种内置的验证器对数据进行验证。例如,在我们的用户数据模型中,username
和 password
属性必须存在,而 email
属性必须符合邮箱格式,可以使用以下方式实现数据的验证:
-- -------------------- ---- ------- ----- ---------- - --- -------- --------- - ----- ------- --------- ------ --------- -- ----------- -- ---- ------- ------ - ----- ------- --------- ------ ------ -- ------------ --------- - ---------- --- -- - ----- --- - ------------------------------------------------------------------------------- ------ ----------- -- -------- ----- -- --------------- -- --- - ----- ------- - -- --------- - ----- ------- --------- ------ --------- -- ----------- - --
在 required
属性中,可以指定参数为布尔值或者字符串类型。如果参数为布尔值 true
,则表示该属性必须存在;如果参数为字符串类型,则表示在属性不存在时将会返回该字符串。
在 validate
属性中,需要通过定义一个自定义验证器 validator
来实现数据的验证。在验证不通过时,可以通过 message
属性指定错误信息,并使用 ES6 模板字符串来动态生成错误信息。
总结
本文介绍了 Mongoose 模型在项目中的创建和使用,包括数据库连接、数据模型的定义、校验以及数据的增删改查等操作。对于 Node.js 后端开发者而言,Mongoose 是一项十分重要的技术,能够方便地进行 MongoDB 数据库操作,希望本文能对读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64aaa81948841e98946bc591