Fastify 中如何使用 MongoDB 及 Mongoose 操作数据库

引言

Fastify 是目前比较火热的 Node.js 框架之一,因为其设计简洁,速度极快而被广泛应用。在 Fastify 项目中,使用 MongoDB 数据库是非常常见的一种情况,而 Mongoose 则是 MongoDB 的 ORM 工具,以更加优雅的方式操作 MongoDB 数据库。在本篇文章中,我们将学习如何在 Fastify 中使用 MongoDB 以及 Mongoose 进行数据库操作。

准备工作

在开始之前,你需要先安装 Node.js 环境,并且你需要在你的电脑上安装 MongoDB 数据库。如果你还没有安装 MongoDB,可以到 MongoDB 官网 下载并安装。

另外,你还需要安装 MongoDB 的 Node.js 驱动程序,使用 npm 命令可以方便地进行安装:

npm install mongodb --save 

而 Mongoose 也是可以使用 npm 进行安装的:

npm install mongoose --save 

现在,我们可以开始写代码了。

使用 MongoDB

连接 MongoDB

在 Fastify 项目中使用 MongoDB,首先需要连接数据库。我们可以使用 Node.js 的 MongoDB 驱动程序进行连接。连接代码如下:

const MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/myproject', (err, db) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log('MongoDB 已连接');
  // 在此执行数据库操作
  db.close();
})

在上述代码中,MongoClient.connect 函数用于连接 MongoDB 数据库,接受两个参数:数据库连接地址和回调函数。如果连接失败,则会输出错误信息。如果连接成功,则会输出 MongoDB 已连接,并且你可以在回调函数中对数据库进行操作。最后,我们还需要关闭数据库连接。

插入数据

在连接数据库之后,我们就可以向数据库中插入数据了。使用 MongoDB 驱动程序,插入数据的代码如下:

// 1. 获取集合
const collection = db.collection('users');
// 2. 插入数据
collection.insertOne({ name: 'user', age: 20 }, (err, result) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(result);
});

在上述代码中,collection 对象用于获取 MongoDB 数据库中的集合(表)。接下来我们使用 insertOne 方法向集合中插入一条数据,如果插入成功,则 result 参数会返回插入数据的信息,否则输出错误信息。

查询数据

在插入了数据之后,我们又可以开始查询数据了。使用 MongoDB 驱动程序,查询数据的代码如下:

// 1. 获取集合
const collection = db.collection('users');
// 2. 查询数据
collection.find({ name: 'user' }).toArray((err, docs) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(docs);
});

在上述代码中,find 方法用于查询集合中满足条件的数据,并使用 toArray 方法将查询结果转换为一个数组。如果查询成功,则 docs 参数会返回查询结果,否则输出错误信息。

更新数据

在数据库中,我们有时需要更新某些数据。使用 MongoDB 驱动程序,更新数据的代码如下:

// 1. 获取集合
const collection = db.collection('users');
// 2. 更新数据
collection.updateOne(
  { name: 'user' },
  { $set: { age: 21 } },
  (err, result) => {
    if (err) {
      console.error(err);
      return;
    }
    console.log(result);
  }
);

在上述代码中,updateOne 方法用于更新集合中满足条件的第一条数据,并使用 $set 操作符设置需要更新的字段值。如果更新成功,则 result 参数会返回更新数据的信息,否则输出错误信息。

删除数据

在数据库中,我们有时也需要删除某些数据。使用 MongoDB 驱动程序,删除数据的代码如下:

// 1. 获取集合
const collection = db.collection('users');
// 2. 删除数据
collection.deleteOne({ name: 'user' }, (err, result) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(result);
});

在上述代码中,deleteOne 方法用于删除集合中满足条件的数据。如果删除成功,则 result 参数会返回删除数据的信息,否则输出错误信息。

以上就是使用 MongoDB 驱动程序在 Fastify 中操作数据库的基本代码。而 Mongoose 则可以让我们更加优雅地进行数据库操作。接下来,我们来了解一下 Mongoose,以及如何在 Fastify 中使用。

使用 Mongoose

连接数据库

在使用 Mongoose 操作 MongoDB 之前,我们需要先连接数据库。连接 MongoDB 的代码与上文所示相同。一旦连接成功,我们就可以在回调函数中使用 Mongoose 初始化模型,如下:

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/myproject');

const db = mongoose.connection;
db.on('error', console.error.bind(console, '连接错误:'));
db.once('open', () => {
  console.log('MongoDB 已连接');
  // 定义模型,并开始执行数据库操作
});

在上述代码中,我们首先引入了 Mongoose 库,并使用 mongoose.connect 方法连接数据库。Mongoose 提供了一个类似 Schema 的机制来定义模型,我们可以在数据库连接成功时初始化模型,然后开始执行数据库操作。

定义模型

在 Mongoose 中,每个模型都对应一个 MongoDB 集合。我们可以使用 Mongoose 定义模型,并关联到对应的集合中。模型的常规创建过程如下:

const mongoose = require('mongoose');

// 定义模式 Schema
const UserSchema = new mongoose.Schema({
  name: String,
  age: Number,
});

// 创建模型 Model
const UserModel = mongoose.model('user', UserSchema);

在上述代码中,我们首先使用 mongoose.Schema 方法定义了数据模型之后,使用 mongoose.model 方法创建出一个名为 user 的模型,该模型对应了一个名为 users 的集合。在接下来的数据库操作中,我们就可以使用 UserModel 操作 users 集合。

插入数据

在 Mongoose 中,我们可以使用 create 方法向数据库中插入数据,代码如下:

const user = { name: 'user', age: 20 };
UserModel.create(user, (err, doc) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(doc);
});

在上述代码中,create 方法用于向数据库中插入一条数据,并且会返回这个新创建的文档。如果创建失败,则会输出错误信息。

查询数据

在 Mongoose 中,我们使用 find 方法查询数据,代码如下:

UserModel.find({ name: 'user' }, (err, docs) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(docs);
});

在上述代码中,find 方法用于查询 users 集合中名为 user 的文档。查询结果会以数组形式返回。

更新数据

在 Mongoose 中,我们可以使用 updateOne 方法更新数据,代码如下:

UserModel.updateOne({ name: 'user' }, { $set: { age: 21 } }, (err, result) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(result);
});

在上述代码中,updateOne 方法用于更新 users 集合中名为 user 的文档,将其年龄更改为 21。如果更新成功,则输出操作结果。

删除数据

在 Mongoose 中,我们使用 deleteOne 方法删除数据,代码如下:

UserModel.deleteOne({ name: 'user' }, (err, result) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(result);
});

在上述代码中,deleteOne 方法将删除 users 集合中名为 user 的文档。如果删除成功,则输出操作结果。

总结

本篇文章介绍了在 Fastify 中使用 MongoDB 以及 Mongoose 进行数据库操作的方法。使用 MongoDB 驱动程序,我们可以直接与 MongoDB 进行交互,进行基本的数据插入、查询、更新和删除操作。而 Mongoose(MongoDB 的 ODM 工具)则可以提供更加优雅的方式进行数据库操作,方便地定义模型并进行 CURD 操作。

如果你想更加深入学习 Fastify 或 MongoDB,也欢迎查看相关文献,了解更多信息。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a3b0f4add4f0e0ffbd5246


纠错反馈