vue+node+mysql 实现数据使用

vue+node+mysql 实现数据使用

  1. 安装mysql
    npm i mysql

  2. vue项目根目录下创建server文件夹

    api下的文件为数据库具体操作,sql.js为数据库配置信息,app.js配置后端端口

  3. 配置数据库

// sql.js
var mysql = require('mysql')
var con = mysql.createConnection({
	host: 'localhost', // 或 127.0.0.1
	user: '管理者名称',
	password: '数据库密码',
	database: '数据库名称'
})
module.exports = con;

// 或
module.exports = {
	mysql: {
		host: 'localhost', // 或 127.0.0.1
		user: '管理者名称',
		password: '数据库密码',
		database: '数据库名称',
		port:'数据库端口号' // 一般为3306
	}
}
  1. app.js
const studentApi = require('./api/studentApi');
// body-parser是一个HTTP请求体解析的中间件,使用这个模块可以解析JSON、Raw、文本、URL-encoded格式的请求体
const bodyParser = require('body-parser');
const express = require('express'); 
const app = express();

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use('/api/student', studentApi);

// 监听端口
app.listen(3000);
console.log('success listen at port:3000......');
  1. 引入axios
    npm i axios
 // main.js
 import axios from 'axios'
 Vue.prototype.$axios = axios  // this.$axios
 
 // or
 //axios文件夹下的index,js
 import axios from 'axios'
 export default axios;
 //在需要使用的vue页面引入axios,直接axios.
  1. api下的student.api
const db=require('../sql.js');//数据库连接信息
const express = require('express'); 
const mysql=require('mysql');
var router = express.Router();

var sqlMap = {
  student: {
    add: 'insert into student(name,sno) values(?,?)',
    delete: 'delete from student where sno = ?',
    alter: 'update student set name = ? where sno = ?',
    select: 'select * from student'
  }
}

// 连接数据库
var conn = mysql.createConnection(db.mysql);
conn.connect();

var jsonWrite = function(res, ret) {
  if(typeof ret === 'undefined') {
    res.json({
      code: '1',
      msg: '操作失败'
    });
  } else {
    res.json(ret);
  }
};

// 编写用户接口
router.post('/addStudent', (req, res) => {
  let sql = sqlMap.student.add;
  let params = req.body;
  console.log(params);
  conn.query(sql, [params.name, params.sno], (err, result) => {
    if (err) console.log("添加失败"+err);
    if (result) jsonWrite(res, result);
  })
});

router.post('/deleteStudent', (req, res) => {
  let sql = sqlMap.student.delete;
  let params = req.body;
  console.log(params);
  conn.query(sql, [params.sno], (err, result) => {
    if (err) console.log("删除失败"+err);
    if (result) jsonWrite(res, result);
  })
});

router.post('/alterStudent', (req, res) => {
  let sql = sqlMap.student.alter;
  let params = req.body;
  console.log(params);
  conn.query(sql, [params.name, params.sno], (err, result) => {
    if (err) console.log("修改失败"+err);
    if (result) jsonWrite(res, result);
  })
});

router.get('/selectStudent', (req, res) => {
  let sql = sqlMap.student.select;
  conn.query(sql, (err, result) => {
    if(err) console.log("查询失败" + err);
    if(result) jsonWrite(res, result);
  })
})

module.exports = router;
  1. vue页面调用
	<form action="">
	  // 功能分开试
      <input type="text" name="name" v-model="name">
      <input type="text" name="sno" v-model="sno">
      <a href="javascript::" @click="addStudent">添加</a><br>
      <input type="text" name="sno" v-model="sno">
      <a href="javascript::" @click="deletStudent">删除</a><br>
      <input type="text" name="name" v-model="name">
      <input type="text" name="sno" v-model="sno">
      <a href="javascript::" @click="alterStudent">修改</a><br>
      <a href="javascript::" @click="selectStudent">查询</a><br>
    </form>
data(){
	return {
		name: '',
      	sno: ''
	}
},
methods: {
    addStudent() {
      let name = this.name;
      let sno = this.sno;
      this.$axios.post('/student/addStudent', {
      //  此处路径要看控制台,报错404即为路径错误
      // 正确路径为http://127.0.0.1:8080/api/student/addStudent
      // 控制台路径如果为 http://127.0.0.1:8080/student/addStudent,则改为/api/student/addStudent
        name: name,
        sno: sno
      }).then((res) => {
        console.log(res);
      })
    },
    deletStudent() {
      let sno = this.sno;
      this.$axios.post('/student/deleteStudent', {
        sno: sno
      }).then((res) => {
        console.log(res);
      })
    },
    alterStudent() {
      let name = this.name;
      let sno = this.sno;
      this.$axios.post('/student/alterStudent', {
        name: name,
        sno: sno
      }).then((res) => {
        console.log(res);
      })
    },
    selectStudent() {
      this.$axios.get('/student/selectStudent').then((res) => {
        console.log(res);
      })
    }
  },
  // TypeError: Cannot read properties of undefined (reading 'post')
  // 此种错误为axios报错
  // axios修改 let axios = require('axios');
  // this.$axios.get --> axios.get
  1. 项目根目录下创建config文件夹,下设index.js文件,配置代理服务器
module.exports = {
  devServer: {
    port: 8080, // 项目运行端口号
    host: '127.0.0.1',
    open: true, // 配置自动启动浏览器
    https: false,
    proxy: {
      '/api': {
          target: 'http://localhost:3000', // 你请求的第三方接口
          ws: true,
          changeOrigin: true, // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
          pathRewrite: {  // 路径重写,
              '^/api': '/api'  // 替换target中的请求地址,也就是说以后你在请求http://api.jisuapi.com/XXXXX这个地址的时候直接写成/api即可。
          }
      }
    }
  }
}

部分参考https://www.cnblogs.com/xufeikko/p/10880819.html

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue+Node+MySQL是一种常见的前后端开发组合。Vue是一种流行的JavaScript框架,用于构建用户界面。Node是一个基于Chrome V8引擎的JavaScript运行时环境,用于构建服务器端应用程序。MySQL是一种关系型数据库管理系统,用于存储和管理数据。 在这个组合中,Vue通常用于构建前端界面,包括用户界面和交互逻辑。Node用于构建后端服务器,处理前端发送的请求,并与数据库进行交互。MySQL用于存储和管理数据。 在你提供的引用中,\[1\]是一个Node服务器端的代码示例,用于处理添加用户的请求,并将用户信息插入到数据库中。\[2\]是一个MySQL连接示例,用于连接到数据库并暴露连接对象供接口操作数据库时使用。\[3\]提供了一个简单的目录结构示例,展示了如何在Node工程中进行数据库操作。 综上所述,Vue+Node+MySQL是一种常见的前后端开发组合,用于构建Web应用程序。Vue负责前端界面,Node负责后端服务器,MySQL负责数据存储和管理。通过这种组合,可以实现前后端的数据交互和处理。 #### 引用[.reference_title] - *1* [vue+node+mysql项目开发(包括部署到服务器)](https://blog.csdn.net/juvialoxer/article/details/114012421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [vue+node+mysql+nginx+express完成云服务器前后端分离搭建](https://blog.csdn.net/weixin_43480867/article/details/103255855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值