百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Vue整合Node.js,直连Mysql数据库进行CURD操作

suiw9 2025-04-05 22:27 4 浏览 0 评论

1. vue创建项目(vue create xxxx)

2. 安装相应的依赖

引入需要的模块(mysql、express、body-parser、cors、vue-resource)

cnpm install mysql --save
cnpm install express --save
cnpm install body-parser --save
cnpm install cors --save
cnpm install vue-resource --save

3.在项目根目录下创建server文件夹:

3.1 在src目录下,main.js中使用vue-resource模块:

// 将vue-resource模块引入进来,否则this.$http将无法使用
import VueResource from 'vue-resource'
Vue.use(VueResource);

3.2 在server目录下,编写database.js:

// 配置数据库相关信息

// 配置数据库相关信息
module.exports = {
  mysql: {
    host: "localhost",
    user: "root",
    password: "root",
    database: "test",
    port: 3306
  }
};

3.3 在server目录下,编写sql.js:

// 编写相关sql语句
let sqlMap = {
  user: {
    // 查询数据
    select: "select * from user where username = ?;",

    // 插入数据
    insert: "insert into user values(?,?);",

    // 修改数据
    update: "update user set password = ? where username = ?;",

    // 删除数据
    delete: "delete from user where username = ? and password = ?;"
  }
};

// 暴露sqlMap
module.exports = sqlMap;

3.4 在server目录下,编写api.js

// 引入database.js文件(配置数据库相关信息)
let models = require('./database');

// 引入sql.js文件(编写相关sql语句)
let $sql = require('./sql');

// 引入mysql和express模块
let mysql = require('mysql');
let express = require('express');
let router = express.Router();

// 开始连接数据库
let conn = mysql.createConnection(models.mysql);
conn.connect();

// 对JSON字符串进行处理
let jsonWrite = function (response, result) {
  if (typeof result === 'undefined') {
    response.json({
      code: '500',
      msg: '操作失败'
    });
  } else {
    response.json(result);
  }
};

// 查询数据('/select')
router.post('/select', (request, response) => {

  // 获取编写相关sql语句
  let sql = $sql.user.select;
  console.log("相关sql语句:", sql);

  // 获取请求参数
  let params = request.body;
  console.log("相关参数", params);

  // [params.username]传参类似mybatis
  conn.query(sql, [params.username], function (error, result) {
    if (error) {
      console.log('网络连接异常:' + error);
    }
    if (result) {
      jsonWrite(response, result);
      for (let i = 0; i < result.length i if resulti.password='= params.password)' return response.end else return response.end insert router.postinsert request> {

  // 获取编写相关sql语句
  let sql = $sql.user.insert;
  console.log("相关sql语句:", sql);

  // 获取请求参数
  let params = request.body;
  console.log("相关参数", params);

  // [params.username]传参类似mybatis
  conn.query(sql, [params.username, params.password], function (error, result) {
    if (error) {
      console.log('网络连接异常:' + error);
    }
    if (result) {
      jsonWrite(response, result);
    }
  })
});

// 修改数据('/update')
router.post('/update', (request, response) => {

  // 获取编写相关sql语句
  let sql = $sql.user.update;
  console.log("相关sql语句:", sql);

  // 获取请求参数
  let params = request.body;
  console.log("相关参数", params);

  // [params.username]传参类似mybatis
  conn.query(sql, [params.password, params.username], function (error, result) {
    if (error) {
      console.log('网络连接异常:' + error);
    }
    if (result) {
      jsonWrite(response, result);
    }
  })
});

// 删除数据('/delete')
router.post('/delete', (request, response) => {

  // 获取编写相关sql语句
  let sql = $sql.user.delete;
  console.log("相关sql语句:", sql);

  // 获取请求参数
  let params = request.body;
  console.log("相关参数", params);

  // [params.username]传参类似mybatis
  conn.query(sql, [params.username, params.password], function (error, result) {
    if (error) {
      console.log('网络连接异常:' + error);
    }
    if (result) {
      jsonWrite(response, result);
    }
  })
});

// 暴露router
module.exports = router;

3.5 在serve文件夹下,写入server.js

// 引入api.js
const userApi = require('./api');

// 引入express模块
const express = require('express');
const app = express();

// 引入cors模块,处理跨域问题
const cors = require('cors');
app.use(cors());

// 引入body-parser模块,解析请求过来的参数
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));

// 访问Node服务端映射地址
app.use('/api', userApi);

// 开始服务器端口
app.listen(8088);
console.log("服务器端口开启成功!");

4. 编写demo2.vue进行交互界面简单编写

// 在路由中引入新demo2.vue页面
import demo2 from "@/components/demo2";
{
   path: '/demo2',
   name: 'demo2',
   component: demo2,
}



<script>
  export default {
    name: "demo2",
    data() {
      return {
        username: '',
        password: '',
      }
    },
    methods: {
      selectData() {
        // 访问node.js服务端(参数名称:要和api.js中[params.属性名]一致,请求方式也应该保持一致)
        this.$http.post('http://localhost:8088/api/select', {
          username: this.username
        }).then(data => {
          if (data.data[0].username == this.username && data.data[0].password == this.password) {
            this.$message({type: 'success', message: "查询成功"});
          } else {
            this.$message({type: 'warning', message: "查询失败"});
          }
        }).catch(error => {
          this.$message({type: 'error', message: "网络连接异常"});
        });
      },
      insertData() {
        // 访问node.js服务端(参数名称:要和api.js中[params.属性名]一致,请求方式也应该保持一致)
        this.$http.post('http://localhost:8088/api/insert', {
          username: this.username,
          password: this.password
        }).then(data => {
          if (data.data.affectedRows > 0) {
            this.$message({type: 'success', message: "新增成功"});
          } else {
            this.$message({type: 'warning', message: "新增失败"});
          }
        }).catch(error => {
          this.$message({type: 'error', message: "网络连接异常"});
        });
      },
      updateData() {
        // 访问node.js服务端(参数名称:要和api.js中[params.属性名]一致,请求方式也应该保持一致)
        this.$http.post('http://localhost:8088/api/update', {
          username: this.username,
          password: this.password
        }).then(data => {
          if (data.data.affectedRows > 0) {
            this.$message({type: 'success', message: "修改成功"});
          } else {
            this.$message({type: 'warning', message: "修改失败"});
          }
        }).catch(error => {
          this.$message({type: 'error', message: "网络连接异常"});
        });
      },
      deleteData() {
        // 访问node.js服务端(参数名称:要和api.js中[params.属性名]一致,请求方式也应该保持一致)
        this.$http.post('http://localhost:8088/api/delete', {
          username: this.username,
          password: this.password
        }).then(data => {
          if (data.data.affectedRows > 0) {
            this.$message({type: 'success', message: "删除成功"});
          } else {
            this.$message({type: 'warning', message: "删除失败"});
          }
        }).catch(error => {
          this.$message({type: 'error', message: "网络连接异常"});
        });
      }
    }
  }
</script>



启动后端

5. 测试:

相关推荐

C和Java效率对比试验和编译器优化影响

首先得承认这不是一个好例子,逻辑过于简单,受环境的干扰也特别大。不能作为评价一门语言综合效率的用例,仅仅是基于个人兴趣的小实验的记录。C语言版本1#include...

Java 代码执行原理(java代码是如何执行的)

专注于Java领域优质技术,欢迎关注作者|Alan来源|cnblogs.com/wangjiming/p/10455993.html对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者...

JVM底层原理之如何选用C1、C2编译器?它们有什么区别?

JVM底层原理之如何选用C1、C2编译器?它们有什么区别?关于JVM底层的C1、C2编译器,很多人不知道它的具体概念,本篇我们详细的讲解一下。...

阿里巴巴Java性能调优实战:深入JVM即时编译器JIT,优化Java编译

深入JVM即时编译器JIT,优化Java编译然而许多Java开发人员对JIT编译器的了解并不多,不深挖其工作原理,也不深究如何检测应用程序的即时编译情况,线上发生问题后很难做到从容应对。类编...

JPHP--一款基于JVM的新PHP编译器(php 编译)

JPHP是一款基于Java语言编写的PHP编译器以及新运行时库,支持多线程、unicode字符串(UTF-16)、GUI、Android开发以及嵌入式Web应用。JPHP可以将PHP源码编译成JVM字...

Java:开源Java编译器的下一个前沿——实时编译即服务

  对于Java开发人员来说,实时(JIT)编译器是提高性能的关键。然而,在容器世界中,由于CPU和内存消耗的限制,性能的提高经常被抵消。为了帮助解决这个问题,EclipseOpenJ9JVM提供...

45张图带你从入门到精通学习WireShark

你好,这里是网络技术联盟站。...

Linux(麒麟)下如果使用wireshark抓包工具

Linux(麒麟)下如果使用wireshark抓包工具一、安装wireshark1、通过命令将麒麟系统iso文件挂载到/mnt2、进入到/mnt/KYLIN3、通过yuminstall安装两个安装...

强烈推荐APP破解常用工具集合(破解软件推荐)

抓包...

wireshark长时间抓包分多个文件(wireshark 长时间抓包)

http://www.cnblogs.com/wangqiguo/p/5068602.html推荐理由一般使用wireshark不需要长时间抓包的,但是有时候遇到网络通信中非常棘手的问题,例如一个小...

wireshark抓包教程详解(wireshark抓包全集)

如果本文对你有帮助,欢迎关注、讨论、点赞、收藏、转发给朋友,让我有持续创作的动力,让我们一起相互学习共同进步。...

收藏!Wireshark最好用的抓包命令都在这了!

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部下午好,我的网工朋友。在现在,网络流量的监控与分析变得尤为重要。无论是排查网络故障、优化性能还是确保网络安全,都需要精...

Wireshark快捷键大全,记住后抓包效率杠杠的

不管你是网络管理员、程序员还是安全工程师,Wireshark都是你的得力助手,用来排查问题、分析流量,甚至学习网络协议。...

渗透测试抓包工具-wireshark(渗透测试脚本)

wireshark功能介绍1.抓包嗅探协议分析2.安全专家必备的技能...

wireshark网络抓包详解(利用wireshark抓包工具抓取网络数据包)

一、简介...

取消回复欢迎 发表评论: