创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作

创建,nodejs,项目,接入,mysql,完成,用户,相关,删改,详细,操作 · 浏览次数 : 174

小编点评

**项目结构** ``` node_test/ ├── app.js ├── models/ ├── db.js └── userModel.js ├── controllers/ └── userController.js └── routers/ └── router.js ``` **代码解读** **1. 使用 npm 进行初始化** - 运行 `npm init` 命令在项目根目录中创建一个 `package.json` 文件。 - 此文件包含项目的信息,例如名称、版本等。 **2. 安装依赖包** - 运行 `npm i` 命令安装 `express` 和 `mysql2` 依赖包。 - `express` 是一个流行的 Web 应用程序框架, `mysql2` 是用于与 MySQL 数据库交互的 Node.js 库。 **3. 项目架构** - 项目包含三个主要部分: - `app.js`:应用程序入口文件,包含所有应用程序代码。 - `models` 文件夹:包含数据库层面的方法。 - `controllers` 文件夹:包含应用程序控制器的代码。 - `routers` 文件夹:包含路由定义的代码。 **4. 请求处理控制器** - `userController.js` 中包含用于用户操作的控制器逻辑。 - 其中,`getAllUsers`、`getUserById`、`createUser`、`updateUser` 和 `deleteUser` 每个函数处理对应的功能。 **5. 路由文件** - `router.js` 中包含用于路由的配置。 - 它定义了路由规则,例如获取所有用户、获取特定用户等。 **6. 启动项目** - 运行 `node app.js` 命令启动项目。 - 该命令会在 `app.js` 中定义的端口启动应用程序。 **7.调试项目** - 可以使用 `node inspect app.js` 命令在代码中设置断点并进行调试。 - 可以在调试过程中查看变量的值、单步执行代码等。

正文

本文为博主原创,转载请注明出处:

1.使用npm进行初始化

  在本地创建项目的文件夹名称,如 node_test,并在该文件夹下进行黑窗口执行初始化命令

 2. 安装 expres包和myslq依赖包

npm i express@4.17.1 mysql2@2.2.5

            

  Express是一个流行的Web应用程序框架,可以帮助我们快速构建Web应用程序和API。Express提供了许多有用的功能,包括路由、中间件、请求响应、错误处理等,使得开发Web应用程序变得简单而快速。 具体来说,Express的依赖实现了以下功能:

  • 路由:Express可以通过路由来定义URL和HTTP方法之间的映射关系,使得我们可以根据不同的URL和HTTP方法提供不同的响应。
  • 中间件:中间件是在请求和响应之间执行的函数,可以对请求进行处理、修改响应或者终止请求-响应循环。Express的中间件机制非常灵活,可以通过多个中间件来完成复杂的业务逻辑。
  • 请求响应:Express提供了方便的API来处理请求和响应,包括读取请求体、设置响应头、发送响应体等。
  • 错误处理:在开发Web应用程序时,难免会遇到一些错误,例如找不到资源、参数错误等等。Express提供了方便的API来处理这些错误,使得我们可以轻松地返回正确的HTTP响应。

3.项目架构

  项目的整体结构如下:

                                    

 3.1 在项目的根目录下创建app.js

const express = require('express')
const router = require('./routes/router')
const app = express()
app.use(express.json())
app.use('/users', router)
app.listen(3000, () => {
  console.log('Server started on port 3000')
})

3.2 创建models文件夹,包含所有数据库层面的方法

3.2.1 创建db.js,配置数据库

const mysql = require('mysql2')
const pool = mysql.createPool({
  host: 'localhost',
  user: 'root',
  password: 'password',
  database: 'test_db',
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
})
module.exports = pool

3.2.2创建 models/userModel.js ,编写用户的新增、修改、删除、查询相关的mysql实现

const pool = require('./db')
function getAllUsers() {
  return new Promise((resolve, reject) => {
    pool.query('SELECT * FROM users', (err, rows) => {
      if (err) {
        reject(err)
      } else {
        resolve(rows)
      }
    })
  })
}
function getUserById(id) {
  return new Promise((resolve, reject) => {
    pool.query('SELECT * FROM users WHERE id = ?', [id], (err, rows) => {
      if (err) {
        reject(err)
      } else {
        resolve(rows[0])
      }
    })
  })
}
function createUser(user) {
  return new Promise((resolve, reject) => {
    pool.query('INSERT INTO users SET ?', user, (err, result) => {
      if (err) {
        reject(err)
      } else {
        resolve(result.insertId)
      }
    })
  })
}
function updateUser(id, user) {
  return new Promise((resolve, reject) => {
    pool.query('UPDATE users SET ? WHERE id = ?', [user, id], (err, result) => {
      if (err) {
        reject(err)
      } else {
        resolve(result.affectedRows)
      }
    })
  })
}
function deleteUser(id) {
  return new Promise((resolve, reject) => {
    pool.query('DELETE FROM users WHERE id = ?', [id], (err, result) => {
      if (err) {
        reject(err)
      } else {
        resolve(result.affectedRows)
      }
    })
  })
}
module.exports = {
  getAllUsers,
  getUserById,
  createUser,
  updateUser,
  deleteUser
}

3.3 创建请求处理的controller

  在根目录下创建controllers文件夹,并在该目录下创建 userController.js

const userModel = require('../models/userModel')
async function getAllUsers(req, res) {
  try {
    const users = await userModel.getAllUsers()
    res.json(users)
  } catch (err) {
    console.error(err)
    res.sendStatus(500)
  }
}
async function getUserById(req, res) {
  try {
    const user = await userModel.getUserById(req.params.id)
    if (user) {
      res.json(user)
    } else {
      res.sendStatus(404)
    }
  } catch (err) {
    console.error(err)
    res.sendStatus(500)
  }
}
async function createUser(req, res) {
  try {
    const id = await userModel.createUser(req.body)
    res.json({ id })
  } catch (err) {
    console.error(err)
    res.sendStatus(500)
  }
}
async function updateUser(req, res) {
  try {
    const rowsAffected = await userModel.updateUser(req.params.id, req.body)
    if (rowsAffected) {
      res.sendStatus(204)
    } else {
      res.sendStatus(404)
    }
  } catch (err) {
    console.error(err)
    res.sendStatus(500)
  }
}
async function deleteUser(req, res) {
  try {
    const rowsAffected = await userModel.deleteUser(req.params.id)
    if (rowsAffected) {
      res.sendStatus(204)
    } else {
      res.sendStatus(404)
    }
  } catch (err) {
    console.error(err)
    res.sendStatus(500)
  }
}
module.exports = {
  getAllUsers,
  getUserById,
  createUser,
  updateUser,
  deleteUser
}

3.4编写路由文件

  项目根目录下创建routers文件夹,并创建路由文件 router.js

const express = require('express')
const router = express.Router()
const userController = require('../controllers/userController')
router.get('/getAllUsers', userController.getAllUsers)
router.get('/getUserById/:id', userController.getUserById)
router.post('/createUser', userController.createUser)
router.put('/updateUser/:id', userController.updateUser)
router.delete('/deleteUser/:id', userController.deleteUser)
module.exports = router

 通过以上代码,我们可以实现对用户表的增删改查操作,使用Node.js和MySQL构建一个简单的用户管理系统。 

4.启动项目

  进入到项目的根目录下,运行以下命令:

node app.js

  如果一切正常,控制台会输出“Server started on port 3000”,表示项目已经成功启动。   

           

5.调试项目

  可以使用Node.js自带的调试器——node inspect指令。在项目的根目录下运行以下命令:

node inspect app.js

  然后可以打开Chrome浏览器,在地址栏输入chrome://inspect,点击“Open dedicated DevTools for Node”即可开始调试。 在调试过程中,可以在代码中设置断点,查看变量的值,单步执行等等操作,帮助找出代码中的问题。 

                 

         

与创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作相似的内容:

创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作

本文为博主原创,转载请注明出处: 1.使用npm进行初始化 在本地创建项目的文件夹名称,如 node_test,并在该文件夹下进行黑窗口执行初始化命令 2. 安装 expres包和myslq依赖包 npm i express@4.17.1 mysql2@2.2.5 Express是一个流行的Web应

nodejs使用eggjs创建项目,接入influxdb完成单表增删改查

转载请注明出处: 1.Eggjs 特性: Eggjs 是 Node.js 服务端应用开发框架,它提供了一套约定,使开发者能够快速搭建、开发和部署应用。以下是 Egg.js 的一些特性和作用: 框架内置了基于约定的目录结构、约定的扩展机制和一些常用的插件,可以帮助开发者快速搭建应用。 Egg.js 遵

安装node.js与webpack创建vue2项目

转载请注明出处: 1.安装node.js 下载地址:http://nodejs.cn/download/ (可查看历史版本) node.js 中文网:http://nodejs.cn/api-v16/ 建议下载稳定版本的msi 格式的进行安装;msi 为windows 直接安装包,一直next即可;

如何使用zx编写shell脚本

前言 在这篇文章中,我们将学习谷歌的zx库提供了什么,以及我们如何使用它来用Node.js编写shell脚本。然后,我们将学习如何通过构建一个命令行工具来使用zx的功能,帮助我们为新的Node.js项目引导配置。 编写Shell脚本的问题 创建一个由Bash或者zsh执行的shell脚本,是自动化重

第131篇:如何上传一个npm包

好家伙, NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。 NPM是世界上最大的软件注册表。 1.首先我们去npm官网注册一个账号 (证明你是人....) 2.在本地创建一个新文件夹 最好和你的包同名 3.改

【Azure Batch】在中国区批处理服务(Mooncake Batch Account)上实验自动池(Auto Pool)的创建/删除

问题描述 在Azure Batch的介绍文档中,提出了自动池的概念, 它可以在任务完成后,自动删除Pool资源,详细介绍:https://docs.azure.cn/zh-cn/batch/nodes-and-pools#autopools & https://learn.microsoft.com

NodeJS 实战系列:如何设计 try catch

本文将通过一个 NodeJS 程序里无效的错误捕获示例,来讲解错误捕获里常见的陷阱。错误捕获不是凭感觉添加 try catch 语句,它的首要目的是提供有效的错误排查信息,只有精心设计的错误捕获才有可能完成这个使命。针对哪些方面去精心设计就是本篇文章里想讨论的内容

有用的内置Node.js APIs

前言 在构建你的第一个Node.js应用程序时,了解node开箱即用的实用工具和API是很有帮助的,可以帮助解决常见的用例和开发需求。 有用的Node.js APIs Process:检索有关环境变量、参数、CPU使用情况和报告的信息。 OS:检索Node正在运行的操作系统和系统相关信息。比如CPU

图数据挖掘:网络的常见度量属性

网络的度分布p(k)表示了一个随机选择的节点拥有度k的概率。我们设度为k的节点数目Nk =#nodes with degree k,除以节点数量N则可得到归一化后的概率质量分布 p(k) = Nk/N。图的路径(path)指一个节点序列,使得序列中的每个节点都链接到序列中的下一个节点,一个路径可以通过经过同一条边多次而和它自身相交。

1.创建一个类,类A中定义了一个方法,该方法能接受3个参数根据参数判断是做加法还是减法并返回计算结果;

class A: def cal(self,x,y,z): if z=='+': return x+y if z=='-': return x-y else: print('error') a=A() b=a.cal(3,4,'+') print(b) 运行结果: 2.延伸:创建一个类,类B继承A类