vue+node.js+express+axios实现连接mysql数据库(前后端分离,详细版)

article/2025/9/29 11:03:03

这两个星期都在学vue技术,感觉真的是博大精深啊!
今天,我给大家总结了用axios连接数据库的步骤,让大家少走弯路(不像我,我用axios连了两天才连接成功。。。)

1、首先,确保你已经有了以下环境:

(1). node.js
(2).mysql数据库已经下载好

2、好了,接下来,你应该用vue-cli脚手架创建你的vue项目。
代码是:vue create app 或者你也可以在终端输入:vue ui用图形界面创建你的vue项目
(我假装你都已经懂了哈!不懂的你快去学vue入门!!)

3、好了,该创建用于测试的数据库了。
(1)创建一个名字为text的数据库:之后在里面创建一个user二维表:在这里插入图片描述
(2)二维表的内容为了方便测试,只有两列:
在这里插入图片描述

4、好了,有了数据库,该进入vue的工程了。(我用vs Code编辑器)
(1)先看文件的目录,如果你第二步没问题,那就没问题。
在这里插入图片描述
(2)安装依赖。
我们连接mysql数据库,需要用到的依赖有:express、mysql和axios
安装他们,你应该在根目录下(这里,我安装在app目录下)
安装express:npm install express mysql body-parser(这里只要这个就行了)
安装axios:npm install axios
安装mysql:npm install mysql
你若没问题,我们打开package.json应该有如下条项:
在这里插入图片描述
(3)好了,完美!就该编码连接数据库了!首先,你得在根目录(这里在app下)建立server文件夹。里面关系及文件如下:

在这里插入图片描述
<1>在api文件夹下,建立userApi.js文件,里面的代码如下:

//api路由
//userApi.js —— 测试用 API 示例var models = require('../db');
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var $sql = require('../sqlMap');
// 连接数据库
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 sql = $sql.user.add;var params = req.body;console.log(params);conn.query(sql, [params.username, params.password], function (err, result) {if (err) {console.log(err);}if (result) {jsonWrite(res, result);}})
});router.get('/query',(req,res)=>{conn.query('select * from user',function(err,row){if(err){console.log(err)            }console.log(typeof row)let data = JSON.stringify(row)res.end(data)})
});module.exports = router;

<2>在server下建立db.js,代码如下:

// 数据库连接配置
//db.js——用来添加 mysql 配置
//根据mysql的IP,端口,用户名,密码,数据库名称自行修改
module.exports = {mysql: {host: 'localhost',user: 'root',password: 'password',database: 'text',port: '3306'}
}

<3>
在server下建立index.js,代码如下:

// node 后端服务器
//index.js——Express 服务器入口文件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.all("*", function (req, res, next) {//设置允许跨域的域名,*代表允许任意域名跨域res.header("Access-Control-Allow-Origin", "*");//允许的header类型res.header("Access-Control-Allow-Headers", "content-type");//跨域允许的请求方式 res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");if (req.method.toLowerCase() == 'options')res.send(200); //让options尝试请求快速结束elsenext();
})
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......')

<4>在server下建立sqlMap.js,代码如下:

// sql语句
//sqlMap.js——SQL 语句映射文件,供 API 调用
var sqlMap = {user: {add: 'insert into user(userName,password) values (?,?)',}}
module.exports = sqlMap

<5>修改前端App.vue文件:
在这里插入图片描述
App.vue代码如下:

<template><div id="app"><div id="nav"><router-link to="/">Home</router-link> |<router-link to="/about">About</router-link></div><h1>{{ msg }}</h1><input v-model="userName" placeholder="请输入姓名" autocomplete><input v-model="password" placeholder="请输入年龄" autocomplete><button v-on:click="addUser">提交</button><p>这是查询按钮</p><p><button @click="changeMsg">点击</button></p><router-view/></div>
</template><script>
import axios from 'axios';
export default{name: 'Hello',data() {return {msg: 'Welcome to Your Vue.js App',userName: '',password: ''}},methods: {addUser() {var name = this.userName;var password = this.password;axios.post('http://localhost:3000/api/user/addUser', {username: name,password: password}, {}).then((response) => { console.log(response); })},changeMsg () {axios.get('http://localhost:3000/api/user/query').then((response) => {console.log(response)console.log('--------')})},}}
</script><style></style>
<style>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;
}#nav {padding: 30px;
}#nav a {font-weight: bold;color: #2c3e50;
}#nav a.router-link-exact-active {color: #42b983;
}
</style>

5、好了,恭喜你,成功了!接下来测试以下,以我的为例:
测试前的数据库:
在这里插入图片描述
接下来的步骤很重要!!!
首先,你要运行配置数据库的入口文件,在我这里,就是得先运行sever下的index.js文件:
在终端,在app/server目录下,输入以下命令:node index.js
在这里插入图片描述
就成功启动连接数据库了!
之后,你再运行vue入口文件,就能测试了!

npm run serve
在这里插入图片描述
打开控制台:添加数据点击提交,再点击查询之后,点开data,能看到:
在这里插入图片描述
从数据库刷新,你也能看到:
在这里插入图片描述
好了,重要的事再说一下,以上的关键步骤,记得要先运行server下的index.js(后端接口),再运行vue项目(前端app)!


http://chatgpt.dhexx.cn/article/MH9vqxtg.shtml

相关文章

VUE下载及安装

下载node.js node.js下载 &#xff0c;选择长期维护版安装NODE&#xff0c;直接全部默认&#xff0c;不要安装在C盘设置NODE 在nodejs安装路径下&#xff0c;新建node_global和node_cache两个文件夹&#xff0c;这是npm安装的全局模块所在的路径&#xff0c;以及缓存cache的路径…

全网最新的vue.js下载和安装的3种方法(2023年)

文章目录 1. 文章引言2. 环境搭建3. 安装vue.js3.1 方法一&#xff1a;官网下载vue.js源代码3.2 方法二&#xff1a;使用npm install创建3.3 方法三&#xff1a;使用bower下载 4. 总结 1. 文章引言 我主要从事java后端开发&#xff0c;但对前端也非常感兴趣&#xff0c;立志成…

Vue连接MySql数据库

一、vue-cli2 全局安装 npm install vue-cli -g 局部安装项目 vue init webpack 项目名称 例如&#xff1a;vue init webpack demo1 二、express-generator 1.全局安装 npm install express-generator -g 2.express --viewejs 项目名称 例如&#xff1a;express --view…

vue+mysql实现前端对接数据库

下载引入相关依赖 1、cnpm install --save mysql 2、cnpm install --save axios 3、cnpm install --save body-parser 4、cnpm install --save express 5、cnpm install --save crypto 在main中引入axios import Axios from axios Vue.prototype.$axios axios 配置连接…

vue下载与安装详细教程

1、安装node&#xff08;网址&#xff1a;https://www.bilibili.com/video/BV1LA411u7dE?t10&#xff09; ①、进入node官网https://nodejs.org/zh-cn/ 点击下载&#xff0c;选择适配的 ②、 双击安装&#xff0c;安装路径随意&#xff0c;勾选第四项&#xff0c;把node添加进…

Vue下载与安装

首先安装node.js环境&#xff1a; node.js安装推荐文章&#xff1a;https://www.cnblogs.com/zhouyu2017/p/6485265.html 基于node.js安装淘宝镜像npm install -g cnpm --registryhttps://registry.npm.taobao.org 安装全局vue-cli脚手架,用于帮助搭建所需的模板框架 在cmd…

【Vue前端】Vue+MySQL(整体用到vue-vli、ElementUI)

提示&#xff1a;小白自学Vue前端&#xff0c;记录一些知识点 VueMySQL(整体用到vue-cli、ElementUI&#xff09; 目录一、相关准备1. 连接数据库2. 添加相关依赖 二、 使用步骤1. userApi.js2. db.js3. index.js4. server目录下新建sqlMap.js5. register.vue6. main.js7. 启动…

vue项目之js对Mysql数据库操作

vue项目之js对Mysql数据库操作 文章目录 vue项目之js对Mysql数据库操作前言一、相关插件安装二、搭建本地服务器三、启动服务器四、前端Vue访问接口进行数据交互结尾 前言 js对数据库的基本操作 一、相关插件安装 下载express&#xff0c;Express 的作用和 Node.js 内置的 htt…

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

Vue.js express mysql实现数据库增删改查 1、 下载安装Node.js 在Node.js官网可下载 2、下载vue-cli脚手架 npm install vue-cli -g 3、 创建项目 后面是项目名称&#xff0c;在安装项目过程中需要选择安装vue-router vue init webpack mysqlconnect 4、安装vue-resource依赖…

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…