Vue.js + express +mysql实现数据库增删改查

article/2025/9/29 11:30:52

Vue.js + express +mysql实现数据库增删改查

1、 下载安装Node.js

在Node.js官网可下载

2、下载vue-cli脚手架

npm install vue-cli -g

3、 创建项目

后面是项目名称,在安装项目过程中需要选择安装vue-router
vue init webpack mysqlconnect

4、安装vue-resource依赖

npm install vue-resourve

5、 安装express模块

npm install express

6、安装mysql依赖

npm install mysql

7、安装body-parser依赖

npm install body-parser

8、 在项目根目录文件下创建server文件夹,在文件夹中有两个文件(db.js和index.js)和一个api文件夹(含有user.Api.js)

db.js,用于数据库连接配置

// 数据库连接配置module.exports = {mysql: {host: 'localhost',user: 'root',//数据库用户名password: 'password',//数据库密码database: 'vue',//所用数据库port: '3306'}
};

index.js,用于配置后端服务器

// node 后端服务器const userApi = require('./api/userApi');
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');
const express = require('express');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));// 后端api路由
app.use('/api/user', userApi);// 监听端口
app.listen(3000);console.log('success listen at port:3000......');

api/userApi.js,用于数据库增删改查操作

var models = require('../db');var express = require('express');var router = express.Router();var mysql = require('mysql');// 连接数据库
var conn = mysql.createConnection(models.mysql);
conn.connect();var jsonWrite = function(res, ret) {if(typeof ret === 'undefined') {res.json({code: '1',msg: '操作失败'});} else {res.json(ret);}
};// 增加用户接口
router.post('/addUser', (req, res) => {var params = req.body;var sql = 'insert into user(username, password) values (?, ?)';console.log(params);conn.query(sql, [params.username, params.password], function(err, result) {if (err) {console.log(err);}if (result) {jsonWrite(res, result);}})
});// 查询用户接口
router.post('/queryUser', (req, res) => {var params = req.body;var sql = " select * from user where username = '" + params.username + "'";console.log(params);conn.query(sql, [params.username], function(err, result) {if (err) {console.log(err);}if (result) {console.log(res);jsonWrite(res, result);}})
});// 修改用户接口
router.post('/updateUser', (req, res) => {var params = req.body;var sql = " update user set password = '"+ params.password + "' where username = '" + params.username + "'";console.log(params);conn.query(sql, [params.username], function(err, result) {if (err) {console.log(err);}if (result) {console.log(res);jsonWrite(res, result);}})
});// 删除用户接口
router.post('/deleteUser', (req, res) => {var params = req.body;var sql = " delete from user where username = '" + params.username + "'";console.log(params);conn.query(sql, [params.username], function(err, result) {if (err) {console.log(err);}if (result) {console.log(res);jsonWrite(res, result);}})
});module.exports = router;

Hello.vue,项目主页

<template><div>{{msg}}<div><input type="text" v-model="username"><input type="password" v-model="password"><button @click="addUser">新增</button></div><div><input type="text" v-model="username"><input type="password" v-model="password"><button @click="queryUser">查询</button></div><div><input type="text" v-model="username"><input type="password" v-model="password"><button @click="updateUser">修改</button></div><div><input type="text" v-model="username"><input type="password" v-model="password"><button @click="deleteUser">删除</button></div></div></template><script>export default {name: 'hello',data () {return {msg: 'Welcome to Your Vue.js App',username: '',password: '',// tableData: [],}},methods: {// 新增函数addUser() {var username = this.username;var password = this.password;this.$http.post('/api/user/addUser', {username: username,password: password},{}).then((response) => {console.log(response);})},// 查询函数queryUser() {var username = this.username;var password = this.password;this.$http.post('/api/user/queryUser', {username: username,password: password},{}).then((response) => {console.log(response);})},// 修改函数updateUser() {var username = this.username;var password = this.password;this.$http.post('/api/user/updateUser', {username: username,password: password},{}).then((response) => {console.log(response);})},// 删除函数deleteUser() {var username = this.username;var password = this.password;this.$http.post('/api/user/deleteUser', {username: username,password: password},{}).then((response) => {console.log(response);})},}}
</script><style scoped></style>

注意:

1、通过npm run dev在终端运行项目,如果没有引用vue-resouce,this.$http.post无法生效,报错如下:

在这里插入图片描述

解决方法:在main.js文件中引入vue-resource
import Vue from 'vue'
import App from './App'
import router from './router'import VueRouter from 'vue-router'
//引入vue-resource
import VueResource from 'vue-resource'Vue.config.productionTip = false;/* eslint-disable no-new */
new Vue({el: '#app',router,components: { App },template: '<App/>'
});// 此处需要use后,this.$http.get或者this.$http.post才可以
Vue.use(VueRouter);
//使用vue-resource
Vue.use(VueResource);
2、在config/index.js中还需要加入以下代码段,否则增删改查过程中会出现(Not Found)。
解决方法
proxyTable: {'/api': {target: 'http://localhost:3000/api/',changeOrigin: true,pathRewrite: {'^/api': ''}}},
3、有一位博主说,在npm run dev过程中还会报eslint的错误,但是我这边是没有遇到这种情况,下面我也给出博主的解决方案供大家参考。
解决方法:

如果执行npm run dev后,报eslint的错误,可以在build目录的webpack.base.conf.js文件中,把eslint的代码注释掉,重新执行npm run dev就不会报错了:ESLint是一个QA工具,用来避免低级错误和统一代码的风格。ESLint被设计为完全可配置的,主要有两种方式来配置ESLint:
在注释中配置:使用JavaScript注释直接把配置嵌入到文件中。
配置文件:使用一个JSON或YAML文件来为全部的目录和它的子目录指定配置信息。
注释的代码如下:
// 去掉eslint验证,注释掉下面的代码
// {
// test: /.(js|vue)$/,
// loader: ‘eslint-loader’,
// enforce: “pre”,
// include: [resolve(‘src’), resolve(‘test’)],
// options: {
// formatter: require(‘eslint-friendly-formatter’)
// }
// }
作者:余生社会
链接:https://www.jianshu.com/p/4c058db039d5
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

实验效果:

1、开始数据表

在这里插入图片描述

2、运行界面

在这里插入图片描述

3、新增用户 123

在这里插入图片描述

4、查询用户

在这里插入图片描述

5、修改用户 1 密码

在这里插入图片描述在这里插入图片描述

6、删除用户 2

在这里插入图片描述在这里插入图片描述
参考学习
https://www.jianshu.com/p/4c058db039d5


http://chatgpt.dhexx.cn/article/5NWq4q6b.shtml

相关文章

vue、jdk、nodejs、maven、tomcat、git、MinGW、mysql、navicat下载与安装

常用Java工具配置操作 文章目录 常用Java工具配置操作一、Vue1.vue2.0安装与项目搭建1)基本环境安装2)项目搭建 2.vue3.0安装与项目搭建1)基本环境安装2)项目搭建 3.升级Vue3.0项目4.小操作 二、JDK三、NodeJs四、Maven五、Tomcat六、Git七、MinGW八、MySql1.下载mysql2.使用命…

生信技能树 linux下安装bowtie2和使用bowtie2进行初步比对

linux下安装软件 echo $PATH ##查看路径echo $PATH|tr ":" "\n"|xargs ls -lh ls -lh /usr/bin 下载安装Bowtie2 首先在root下新建一个Biosoft的文件夹&#xff0c;切换目录到该文件夹 cd Biosoft 再在该文件夹下&#xff0c;新建一个Bwotie2的文件夹 mk…

LCWGS(6)在Linux服务器上安装Bowtie2

Bowtie2是一种用于将序列读段与长参考序列进行比对的超快且内存高效的工具。它特别擅长对齐大约50到100或1000个字符的读段&#xff0c;并且特别擅长对齐相对较长的&#xff08;如哺乳动物&#xff09;基因组。Bowtie2用FM索引对基因组进行索引&#xff0c;以保持其占用的内存空…

Bowtie2去除污染的使用方法

简介 Bowtie 2是一种用于长参考序列对齐测序读取的工具。它尤其擅长将大约50-100多个字符的比对到相对较长的&#xff08;例如哺乳动物&#xff09;基因组。Bowtie 2支持gapped, local,and paired-end alignment模式。可以同时使用多个处理器以实现更高的对齐速度。 使用方法 b…

html怎么删除链接css,css如何去掉链接的下划线?

我们在HTML网页制作过程中&#xff0c;相信大家对超链接这个概念并不陌生。我们都知道想要给某段文本或者指定元素添加一个锚点也就是超链接需要用到HTML中的a标签。 在使用a标签时文本超链接会自动出现下划线&#xff01;这就让一些小白们感到苦恼了&#xff0c;因为从视觉美观…

CSS学习笔记

目录 1. 学习CSS的基础 1.1 基本语法规范 1.2 引入方式 2. 选择器 2.1 选择器的功能和种类 2.2 基础选择器 2.3 复合选择器 2.3.1 后代选择器 2.3.2 子选择器 2.3.3 并集选择器 2.3.4 伪类选择器 3. 常用元素属性 3.1 字体属性 3.2 文本属性 3.3 背景属性 3.4 圆角…

HTML 类别选择器下划线,css text-decoration下划线 删除线 上划线属性样式

一、DIV+CSS下划线基础 DIV CSS text-decoration下划线、删除线、上划线属性,本节介绍使用div+css样式实现文字字体下划线、字体删除线贯穿线、上划线样式。 1、CSS控制下划线出现用到地方 - TOP 在DIV CSS网页中常常使用CSS代码来人对象文字内容加上下划线。 使用CSS属性单词…

html p标签 删除线,strike html 删除线 贯穿线标签

html 标签元素&#xff0c;删除线标签元素\贯穿线标签元素 配置文本翰墨字体删除线标签 &#xff0c;字体翰墨上中穿一线画一横&#xff0c;经常在价值原价与优惠价值用到&#xff0c;原价数字上运用删除线成就&#xff0c;当初优惠价钱数字畸形显现。 一样平常对文字、数字等…

iOS 删除线不显示问题 10.3以后

更新到最新的系统后&#xff0c;删除线不显示&#xff0c;低版本没问题。 解决方法&#xff1a; 添加NSBaselineOffsetAttributeName就可以了 例如&#xff1a; [orignalAtt addAttributes:{NSBaselineOffsetAttributeName:(NSUnderlineStyleSingle),NSBaselineOffsetAttrib…

用css怎样实现波浪线,Css3实现波浪线效果1

一、波浪线 ,常用 .info::before {content: ; position: absolute; top: 30px; width: 100%; height: 0.25em; background: linear-gradient(135deg, transparent, transparent 45%, #008000, transparent 55%, transparent 100%), linear-gradient(45deg, transparent, trans…

css如何去掉表格中的线,css怎么设置表格线

css设置表格线的方法&#xff1a;首先新建一个html文件&#xff1b;然后使用table标签创建一个两行两列的表格&#xff1b;接着设置table表格的id为testable&#xff1b;最后使用border属性设置表格线为1px的红色线即可。 本文操作环境&#xff1a;windows7系统、HTML5&&am…

小程序中适用—css样式_删除线等

text-decoration下划线CSS单词值参数&#xff1a; none :  无装饰 blink :  闪烁 underline :  下划线 line-through :  贯穿线 overline :  上划线 text-decoration:none 无装饰&#xff0c;通常对html下划线标签去掉下划线样式 text-decoration:underline 下划线样式 t…

php函数删除线,如何用css设置删除线样式?(代码详解)

本篇文章主要给大家介绍关于css删除线的设置实现方法。 相信大家在浏览各大商城网站时&#xff0c;都会看到一些关于产品促销的效果&#xff0c;比如某个产品的原价标记为多少&#xff0c;现价又改成了多少&#xff0c;并且为了用户发现更直观的差距&#xff0c;通常会在原价上…

css 线怎么改颜色,css删除线颜色怎么设置

在css中可以通过text-decoration属性设置删除线颜色&#xff0c;其设置语句如“text-decoration: line-through red;”&#xff0c;其中red参数则表示删除线的颜色。 本文操作环境&#xff1a;Windows7系统、css3版&#xff0c;DELL G3电脑 text-decoration 属性规定添加到文本…

CSS模块的书写以及删除线的作用和来历什么是删除线

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><style>/*关羽这一行代码变为绿色*/#gy_li{color: green}/*张飞,苹果这一行代码变为黄色*/#zf_li,#pg_ul{color: yellow}/*i…

css:text-decoration给文字增加上划线、删除线、下划线

CSS 语法 text-decoration: <text-decoration-line text-decoration-style text-decoration-color>text-decoration-line 值描述none默认。定义标准的文本。underline定义文本下的一条线。overline定义文本上的一条线。line-through定义穿过文本下的一条线。blink定义闪…

二叉树左旋右旋

二叉树的左旋和右旋简单图示 旋转是二叉树的基本操作&#xff0c;我们可以对任意一个存在父亲节点的子节点进行旋转&#xff0c;包括如下几种形式&#xff08;设被旋转节点为x&#xff0c;其父亲节点为p&#xff09;&#xff1a; 1.左旋 旋转前&#xff0c;x是p的右儿子。 x的…

红黑树区分 左旋 和 右旋

红黑树区分 左旋 和 右旋 仔细观察上面"左旋"和"右旋"的示意图。我们能清晰的发现&#xff0c;它们是对称的。无论是左旋还是右旋&#xff0c;被旋转的树&#xff0c;在旋转前是二叉查找树&#xff0c;并且旋转之后仍然是一颗二叉查找树。 左旋示例图(以x…

树的左旋与右旋

下图所示操作称为对结点Q的右旋&#xff0c;对结点P的左旋。二者互为逆操作。 简单讲&#xff0c;右旋——自己变为左孩子的右孩子&#xff1b;左旋——自己变为右孩子的左孩子。 [cpp] view plain copy #include class BinTree{ private: typedef struct node{ …