返回

第五章启动服务端连接MySQL

前端

在Node.js中使用Sequelize连接MySQL:搭建一个功能齐全的Todo List项目

在创建现代Web应用程序时,将后端服务连接到关系型数据库至关重要。Node.js、Express和Sequelize等技术提供了强大的工具,使开发人员能够轻松而高效地实现这一目标。在本教程中,我们将深入探讨如何使用这些技术来构建一个功能齐全的Todo List项目,该项目可以与MySQL数据库交互。

1. 设置环境

首先,让我们为我们的项目设置必要的环境。

  • 安装Node.js和npm
  • 安装Express:npm install express
  • 安装MySQL
  • 安装Sequelize:npm install sequelize

2. 创建Express应用程序

使用以下命令创建新的Express应用程序:

mkdir todo-list
cd todo-list
npm init -y

接下来,在package.json文件中添加Express和Sequelize依赖项:

"dependencies": {
  "express": "^4.17.1",
  "sequelize": "^6.13.1",
  "mysql2": "^2.3.3"
}

然后,使用以下命令安装依赖项:

npm install

3. 创建MySQL数据库

在MySQL中,创建名为todo_list的数据库:

CREATE DATABASE todo_list;

4. 定义Sequelize模型

Sequelize模型用于定义数据库中的数据结构。在项目中创建一个models文件夹,并在其中创建一个名为todo.js的文件。在此文件中,添加以下代码:

const Sequelize = require('sequelize');

const sequelize = new Sequelize('todo_list', 'root', '', {
  host: 'localhost',
  dialect: 'mysql'
});

const Todo = sequelize.define('todo', {
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    primaryKey: true
  },
  title: {
    type: Sequelize.STRING,
    allowNull: false
  },
  description: {
    type: Sequelize.STRING
  },
  completed: {
    type: Sequelize.BOOLEAN,
    defaultValue: false
  }
});

module.exports = Todo;

此模型定义了todo表,其中包含idtitledescriptioncompleted字段。

5. 同步模型

同步模型会将模型定义与数据库中的实际表相匹配。在项目中创建一个server.js文件,并在其中添加以下代码:

const express = require('express');
const Todo = require('./models/todo');

const app = express();

app.use(express.json());

app.get('/todos', async (req, res) => {
  const todos = await Todo.findAll();
  res.json(todos);
});

app.post('/todos', async (req, res) => {
  const todo = await Todo.create(req.body);
  res.json(todo);
});

app.put('/todos/:id', async (req, res) => {
  const todo = await Todo.findByPk(req.params.id);
  todo.update(req.body);
  res.json(todo);
});

app.delete('/todos/:id', async (req, res) => {
  const todo = await Todo.findByPk(req.params.id);
  todo.destroy();
  res.json({ message: 'Todo deleted successfully' });
});

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

此脚本定义了REST API端点,用于获取、创建、更新和删除todo项目。

6. 运行服务器

最后,使用以下命令启动服务器:

node server.js

服务器将在端口3000上运行,您可以使用Postman或其他REST客户端进行测试。

7. 结论

通过使用Node.js、Express和Sequelize,我们成功地搭建了一个功能齐全的Todo List项目,该项目可以与MySQL数据库交互。本教程向您展示了如何创建数据库模型、定义REST API端点以及与数据库进行增删改查操作。现在,您可以基于此基础构建更复杂和强大的应用程序。

常见问题解答

  1. 如何更改服务器监听的端口?

    • server.js文件中,将app.listen(3000)更改为您想要的端口号。
  2. 如何向todo表中添加新字段?

    • 更新todo.js模型,添加新字段,然后重新同步模型。
  3. 如何保护API端点以防止未经授权的访问?

    • 使用Express中间件,例如express-jwtpassport.js,来实现身份验证和授权。
  4. 如何部署应用程序以使其可以在生产环境中运行?

    • 使用Heroku、AWS或其他云平台来部署您的应用程序。
  5. 如何使用不同的数据库引擎,例如PostgreSQL或MongoDB?

    • Sequelize支持多种数据库引擎。只需将dialect选项更改为所需的引擎。