nodejs使用express框架启动服务操作mysql数据库

描述:

首先在本地搭建mysql数据库,配置:host: ‘192.168.3.249’,user: ‘mkx’,password: ‘123456’,database: ‘gg’.测试连接正常.使用express写两个接口,
1.查询所有学生的接口,使用的get请求,无参数.
2.插入一条学生信息,使用post请求,body是一个json的学生信息{name:“xxx”,age:12,score:55,s_id:1001},注:s_id是课程代号.
上代码:
数据库代码 database.js

const mysql = require('mysql2');

const connection = mysql.createConnection({
    host: '192.168.3.249',
    user: 'mkx',
    password: '123456',
    database: 'gg'
});

const insertData = (name, age, score, s_id) => {
    return new Promise((resolve, reject) => {
        const query = `INSERT INTO student (name, age, score, s_id) VALUES (?, ?, ?, ?)`;
        const values = [name, age, score, s_id];
        connection.query(query, values, (error, results, fields) => {
            if (error) {
                console.error('Error occurred while inserting data:', error);
                reject({ data: error })
            } else {
                console.log('Data inserted successfully!');
                resolve({ data: results });
            }
        });
    })
};

const getAllStudents = () => {
    return new Promise((resolve, reject) => {
        const query = `SELECT * FROM student`;
        connection.query(query, (error, results, fields) => {
            if (error) {
                console.error('Error occurred while fetching data:', error);
                reject({ data: error })
            } else {
                console.log('All students information:');
                resolve({ data: results });
            }
        });
    })
};

module.exports = { insertData, getAllStudents }

服务器代码: index.js

const express = require('express');
const database = require('./database');

const app = express();
const port = 3000;

app.use(express.json());

app.use((req, res, next) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
    if (req.method === 'OPTIONS') {
        res.sendStatus(200);
    } else {
        next();
    }
});

app.post('/students', (req, res) => {
    const { name, age, score, s_id } = req.body;
    database.insertData(name, age, score, s_id)
        .then(() => {
            res.status(200).json({ message: 'Data inserted successfully!' });
        })
        .catch(error => {
            res.status(500).json({ error: 'Error occurred while inserting data.' });
        });
});

app.get('/students', (req, res) => {
    database.getAllStudents()
        .then(results => {
            res.status(200).json(results);
        })
        .catch(error => {
            res.status(500).json({ error: 'Error occurred while fetching data.' });
        });
});

app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});

需要安装的依赖:

 "dependencies": {
    "express": "^4.18.2",
    "mysql2": "^3.6.5"
  }

数据库的表是个student 字段分别是 (注意:你需要自己的管理员账号,或者直接使用root账号)
id (自增的)
name 字符串
age int型的
score int型的
s_id 字符串

postman 截图

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/243892.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机组成原理——存储器21-40

21、存储器存取周期是指(C) A、存储器的读出时间 B、存储器的写入时间 C、存储器进行连续读或写操作所允许的最短时间间隔 D、存储器进行一次读或写操作所需的平均时间 存取周期是存储器进行连续读或写操作所允许的最短时间间隔 存取时间是存储器进行一次…

【面试】数据库—优化—聚簇索引和非聚簇索引、回表查询

数据库—优化—聚簇索引和非聚簇索引、回表查询 1. 什么是聚簇索引什么是非聚簇索引 ? 聚集索引选取规则: 如果存在主键,主键索引就是聚集索引;如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引&#xff1b…

Geek challenge 2023 EzHttp

打开链接需要使用post请求提交username和password 查看源码得到提示,爬虫想到robots协议 访问robots.txt 访问得到的路径:/o2takuXXs_username_and_password.txt 拿到用户名和密码: username:admin password:dm1N123456r00t# 进行post传参…

Windows 和 MacOS 上安装配置ADB(安卓调试桥)

一、Android 调试桥 (ADB) Android 调试桥(ADB) 是一款多功能命令行工具,它让你能够更便捷地访问和管理 Android 设备。使用 ADB 命令,你可以轻松执行以下操作 在设备上安装、复制和删除文件;安装应用程序&#xff1…

HTTP与HTTTPS的区别

目录 一、HTTP和HTTTPS的概念 HTTP(Hypertext Transfer Protocol): HTTPS(Hypertext Transfer Protocol Secure): 二、HTTP 的 get 请求和 post 请求的区别? 三、HTTPS 的工作原理&#xff…

07.CSS常用样式

CSS常用样式 1.颜色样式 颜色名 介绍 直接使用颜色对应的英文单词,编写比较简单 具体颜色名参考 MDN 官方文档 例子 p {color:red; }缺点 颜色名这种方式,表达的颜色比较单一,所以用的并不多 rgb或rgba 介绍 使用 红、黄、蓝 这三…

Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

水闸水雨情监测设施建设项目

功能设计 在水闸上、下游挡墙外侧各安装1套雷达水位计,水闸屋顶布置个雨量计,水位及雨量监测数据的采集与传输主要是实时的完成水位、雨量数据的采集与处理,并按照设定的工作方式、时间间隔、增量范围将数据上传至扬压力监测站边缘计算终端&…

EasyExcel实现⭐️本地excel数据解析并保存到数据库的脚本编写,附案例实现

目录 前言 一、 EasyExcel 简介 二、实战分析 1.Controller控制层 2. service方法和方法实现 3.EasyExcel相关类 3.1 excel表实体类 3.2 自定义监听器类 4.测试 4.1 准备工作 4.2 断点调试 5.生成脚本文件 三、分析总结 章末 小伙伴们大家好,最近开发的时…

微服务最佳实践:构建可扩展且高效的系统

微服务架构彻底改变了现代软件开发,提供了无与伦比的敏捷性、可扩展性和可维护性。然而,有效实施微服务需要深入了解最佳实践,以充分发挥微服务的潜力,同时避免常见的陷阱。在这份综合指南中,我们将深入研究微服务的关…

getchar的功能和用法

getchar()是C语言中的一个标准库函数,用于从标准输入(通常是键盘)读取一个字符,并将其作为int类型返回。它通常用于从键盘获取用户输入。 getchar()函数在程序中等待用户输入,当用户输入一个字符并按下回车键后&#…

【抄作业】ubuntu完全卸载CUDA,彻底卸载cuda,卸载不同版本的cuda,cuda不同版本的卸载方法

卸载的实现方法 如何正确、完全的卸载cuda呢? 其实cuda安装时就已经准备好了卸载的接口,卸载程序在/usr/local/cuda-xx.x/bin下,需要注意的是cuda10.0及之前的版本卸载程序名为uninstall_cuda_xx.x.pl,而cuda10.1及之后的版本卸…

【玩转 TableAgent数据智能分析】-数据分析师的大模型

【玩转 TableAgent数据智能分析】-数据分析师的大模型 九章云极DataCanvas介绍TableAgent的新手入门指南:官网首页立刻体验问题测试问题1:问题2:问题3:问题4:问题5: 通用大模型对比分析对csv数据集的支持比…

【游戏篇】Scratch之小猴子接水果

【作品展示】小猴子接水果 操作:点击小绿旗,按下键盘左右键控制小猴子移动拿到水果,同时也要躲避炸弹。

Windows汇编调用printf

VS2022 汇编 项目右键 生成依赖项 生成自定义 勾选masm 链接器 高级 入口点 main X86 .686 .model flat,stdcall option casemap:none includelib ucrt.lib includelib legacy_stdio_definitions.libEXTERN printf:proc.data szFormat db %s,0 szStr db hello,0.code main…

Python Socket编程

Python Socket编程 文章目录 Python Socket编程1. 弄懂HTTP、Socket、TCP这几个概念五层网络模型 2. client和server实现通信Socket编程模式指南代码实现 3. socket实现聊天和多用户连接4. socket模拟http请求 1. 弄懂HTTP、Socket、TCP这几个概念 整个计算机网络都是有协议组…

leetcode算法题:省份数量

leetcode算法题547 链接:https://leetcode.cn/problems/number-of-provinces 题目 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间…

c#按照时间进行数据存储(不用数据库)

概要介绍 按照日期生成文件夹,按照时间生成文件名,存储字符串。 可以用于简单数据记录(如果数据存储考虑格式文本,保存为csv格式) 实现效果 调用方法 SaveText.saveStr("测试字符串"DateTime.Now.ToStrin…

6.3 C++11 原子操作与原子类型

一、原子类型 1.多线程下的问题 在C中&#xff0c;一个全局数据在多个线程中被同时使用时&#xff0c;如果不加任何处理&#xff0c;则会出现数据同步的问题。 #include <iostream> #include <thread> #include <chrono> long val 0;void test() {for (i…

C语言算法~BF算法和KMP算法

各位CSDN的各位你们好啊&#xff0c;今天小赵要给大家分享一个算法方面的知识这个算法也是小赵琢磨了好久&#xff0c;才算把它理明白&#xff0c;今天小赵就用一篇博客带你理明白这个算法——KMP算法。当然再介绍这个算法前&#xff0c;小赵还会介绍一个BF算法和一个函数&…