简介
Mongoose 是一个 Node.js 的 MongoDB 驱动程序,通过它,我们可以使用 JavaScript 的方式来操作 MongoDB 数据库,它的集成使用与 Express 相辅相成,能够在前端项目中快速进行数据存储、查询以及更新等操作。本文将会介绍 Mongoose 与 Express 的集成使用技巧,包括 Mongoose 的安装、连接以及 CURD 操作。
安装和连接 Mongoose
Mongoose 的安装非常简便,在本地项目中通过 npm 命令即可安装:
npm install mongoose --save
在连接 MongoDB 数据库之前,我们需要先确认本地是否安装了 MongoDB,若未安装,需要前往 MongoDB 官网进行下载安装,接着我们可以通过下面的代码连接本地 MongoDB 数据库:
-- -------------------- ---- ------- ----- -------- - ------------------- --------------------------------------------- - ---------------- ----- ------------------- ----- --------------- ----- ----------------- ----- ---------- -- - -------------------- ------- ---------- ------------ -- - -------------------- ------- --------- ---- --
以上代码将会连接本地的 MongoDB ,并且返回一个 Promise 对象,当连接成功时,输出 Connect MongoDB success!,否则输出 Connect MongoDB failed!。其中,useNewUrlParser、useUnifiedTopology、useCreateIndex 及 useFindAndModify 都是为了规避 Mongoose 版本更新时可能出现的一些问题。
Model 和 Schema 的创建
一般情况下,我们在前端项目中需要定义多个 Model 和 Schema,并将其注册到全局,以便在整个项目中使用,下面是一个模块创建 Model 和 Schema 的示例代码:
-- -------------------- ---- ------- ----- -------- - ------------------- ----- ------ - --------------- ----- ---------- - --- -------- ----- - ----- ------- --------- ---- -- ---- - ----- ------- --------- ---- -- ---- - ----- ------- -------- ------ - -- ----- --------- - ---------------------- ----------- -------------- - - ----------- --------- -
在以上代码中,我们首先导入 Mongoose 模块,随后定义了一个 UserSchema,它包含了三个字段:name、age 和 sex, 其中 name 和 age 为必填字段,而 sex 字段则默认为 Male。 接着,我们将 UserSchema 通过 mongoose.model 函数创建成一个 Model,并设置其在数据库中的名称为 user,最后通过 exports 将 UserModel 和 UserSchema 导出给其他文件使用。
CURD 操作实现
在 Model 和 Schema 创建完成之后,我们就可以对数据库进行 CURD 操作了,下面将详细介绍每一项的使用方法。
添加数据
添加数据的方法非常简单,只需要使用 Model 的 create 函数即可,例如:
-- -------------------- ---- ------- ----- - --------- - - -------------------- ------------------ ----- ------- ---- --- ---- -------- ----------- -- - ------------------- ------- ---- ------------ -- - ------------------- ---- -------- ---- --
以上代码表示创建一个新用户 Lily,并将其添加到数据库中,当添加成功时输出 Create user: [object],否则输出 Create user failed。
查询数据
查询数据分为两种情况:一种是查询全部数据,另一种是根据条件查询数据。
查询全部数据
查询全部数据可以使用 Model 的 find 函数,例如:
const { UserModel } = require('UserModel') UserModel.find().then(docs => { console.log('All users:', docs) }).catch(err => { console.log('Query users faild:', err) })
以上代码表示查询数据库中的全部用户数据,并将其返回到 docs 中,当查询成功时输出 All users: [object,Object],否则输出 Query users failed。
根据条件查询数据
根据条件查询数据需要使用 Model 的 find 函数,并在 find 函数中传入一个查询条件对象。例如,我们要查询年龄小于 18 岁的所有用户:
const { UserModel } = require('UserModel') UserModel.find({ age: { $lt: 18 } }).then(docs => { console.log('All users under 18:', docs) }).catch(err => { console.log('Query users faild:', err) })
以上代码表示查询数据库中年龄小于 18 岁的所有用户,并将其返回到 docs 中,当查询成功时输出 All users under 18: [object, Object],否则输出 Query users failed。
更新数据
更新数据需要使用 Model 的 update 或 updateOne 或 updateMany 函数,在其中传入一个更新条件和一个更新值对象。例如,我们要将年龄小于 18 岁的所有用户的性别改成 Female:
const { UserModel } = require('UserModel') UserModel.updateMany({ age: { $lt: 18 } }, { sex: 'Female' }).then(result => { console.log('Update users success!') }).catch(err => { console.log('Update users failed:', err) })
以上代码表示更新数据库中年龄小于 18 岁的所有用户,将其性别字段改为 Female,当更新成功时输出 Update users success!,否则输出 Update users failed。
删除数据
删除数据同样需要使用 Model 的 remove 或 deleteOne 或 deleteMany 函数,在其中传入一个删除条件对象。例如,我们要删除所有年龄小于 18 岁的用户数据:
const { UserModel } = require('UserModel') UserModel.deleteMany({ age: { $lt: 18 } }).then(result => { console.log('Delete users success!') }).catch(err => { console.log('Delete users failed:', err) })
以上代码表示删除数据库中年龄小于 18 岁的所有用户数据,当删除成功时输出 Delete users success!,否则输出 Delete users failed。
结论
本文介绍了 Mongoose 与 Express 的集成使用技巧,包括 Mongoose 的安装、连接以及 CURD 操作。希望读者们通过本文的学习,能够对 Mongoose 与 Express 的集成使用有更加深入的了解,并能够在项目中更加方便快捷地进行数据库操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/677262bb6d66e0f9aad86282