Node.js+MongoDB 实现简单 CRUD 操作

在现代 Web 开发中,数据存储和管理是非常重要的一环。而 MongoDB 是一种 NoSQL 数据库,它具有高度的灵活性和可扩展性,非常适合用于构建大规模应用程序。Node.js 是一个基于 JavaScript 运行时的平台,它可以帮助我们快速搭建 Web 服务器和 RESTful API。本文将介绍如何使用 Node.js 和 MongoDB 实现简单的 CRUD 操作。

环境准备

在开始之前,我们需要先安装 Node.js 和 MongoDB。这里以 Ubuntu 为例,演示如何安装:

安装 Node.js

可以通过 nvm(Node Version Manager)来安装和管理 Node.js。首先,需要安装 nvm:

安装完成后,重启终端,然后就可以通过 nvm 安装 Node.js 了:

安装 MongoDB

可以通过 apt-get 命令来安装 MongoDB:

安装完成后,可以使用以下命令来启动 MongoDB 服务:

创建项目

接下来,我们需要创建一个新的 Node.js 项目。可以使用以下命令来创建:

安装依赖

在项目中,我们需要安装一些依赖,包括 Express、Mongoose 和 Body-parser。可以使用以下命令来安装:

连接 MongoDB

在开始编写代码之前,我们需要先连接 MongoDB 数据库。可以使用 Mongoose 来连接 MongoDB。在项目的根目录下,创建一个名为 db.js 的文件,并输入以下代码:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/node-mongodb-demo', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

const db = mongoose.connection;

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  console.log('Connected to MongoDB');
});

在代码中,我们使用 mongoose.connect 方法连接 MongoDB,其中第一个参数是 MongoDB 的连接地址,第二个参数是一些选项,包括使用新的 URL 解析器和使用新的服务器发现和监视引擎。在连接成功后,会打印出 Connected to MongoDB

创建模型

在 MongoDB 中,数据存储在集合(Collection)中,而集合又属于数据库(Database)。在 Mongoose 中,我们需要先定义一个模型(Model),然后才能使用这个模型来操作数据库。在项目的根目录下,创建一个名为 user.js 的文件,并输入以下代码:

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: String,
  age: Number,
  email: String
});

const User = mongoose.model('User', userSchema);

module.exports = User;

在代码中,我们定义了一个名为 User 的模型,它有三个属性:nameageemail。然后,我们使用 mongoose.model 方法将模型和集合关联起来,并将其导出。

创建路由

在项目中,我们需要创建一些路由,用来处理 HTTP 请求。在项目的根目录下,创建一个名为 routes.js 的文件,并输入以下代码:

const express = require('express');
const bodyParser = require('body-parser');
const User = require('./user');

const router = express.Router();

router.use(bodyParser.urlencoded({ extended: true }));
router.use(bodyParser.json());

router.get('/users', function(req, res) {
  User.find(function(err, users) {
    if (err) {
      res.status(500).send(err);
    } else {
      res.send(users);
    }
  });
});

router.get('/users/:id', function(req, res) {
  User.findById(req.params.id, function(err, user) {
    if (err) {
      res.status(500).send(err);
    } else {
      res.send(user);
    }
  });
});

router.post('/users', function(req, res) {
  const user = new User(req.body);

  user.save(function(err, user) {
    if (err) {
      res.status(500).send(err);
    } else {
      res.send(user);
    }
  });
});

router.put('/users/:id', function(req, res) {
  User.findByIdAndUpdate(req.params.id, req.body, { new: true }, function(err, user) {
    if (err) {
      res.status(500).send(err);
    } else {
      res.send(user);
    }
  });
});

router.delete('/users/:id', function(req, res) {
  User.findByIdAndRemove(req.params.id, function(err, user) {
    if (err) {
      res.status(500).send(err);
    } else {
      res.send(user);
    }
  });
});

module.exports = router;

在代码中,我们使用 Express 的 Router 来创建路由,然后使用 body-parser 中间件来解析 HTTP 请求体。在路由中,我们定义了五个路由处理程序,分别用于获取所有用户、获取单个用户、创建用户、更新用户和删除用户。在每个路由处理程序中,我们使用 Mongoose 来操作 MongoDB 数据库。

启动应用

最后,我们需要在应用中启用路由。在项目的根目录下,创建一个名为 app.js 的文件,并输入以下代码:

const express = require('express');
const db = require('./db');
const routes = require('./routes');

const app = express();

app.use('/api', routes);

app.listen(3000, function() {
  console.log('Server listening on port 3000');
});

在代码中,我们使用 Express 来创建应用,并使用 app.use 方法来启用路由。在启动应用时,会打印出 Server listening on port 3000

测试应用

现在,我们可以使用 Postman 或 curl 等工具来测试应用。以下是一些常用的测试操作:

获取所有用户

获取单个用户

创建用户

更新用户

删除用户

总结

本文介绍了如何使用 Node.js 和 MongoDB 实现简单的 CRUD 操作。首先,我们连接了 MongoDB 数据库,然后定义了一个模型用来操作数据库。接着,我们创建了路由用来处理 HTTP 请求,并使用 Mongoose 来操作 MongoDB 数据库。最后,我们启动了应用并测试了它。这个应用可以作为一个简单的 RESTful API,用来存储和管理用户数据。

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