网站首页 > 基础教程 正文
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 (result[i].password == params.password) {
return response.end();
} else {
return response.end();
}
}
}
})
});
// 插入数据('/insert')
router.post('/insert', (request, response) => {
// 获取编写相关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,
}
<template>
<div style="margin-left: 100px">
<h3>数据库增删改查(CURD操作)</h3>
<label>用户名:<input type="text" v-model="username"/></label><br/><br/>
<label>密码:<input type="password" v-model="password"/></label><br/><br/>
<el-button type="primary" @click="selectData">查询</el-button>
<el-button type="primary" @click="insertData">增加</el-button>
<el-button type="primary" @click="updateData">修改</el-button>
<el-button type="primary" @click="deleteData">删除</el-button>
</div>
</template>
<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>
<style scoped>
</style>
启动后端
5. 测试:
- 上一篇: MySQL数据库之Haproxy+PXC集群搭建(中)
- 下一篇: Mysql高可用方案--PXC
猜你喜欢
- 2024-12-02 GitHub精选 | 后台权限管理系统(基于Node.js)
- 2024-12-02 Node.js 的 5 个常见服务器漏洞
- 2024-12-02 Node-RED教程 – 22 modbus读取数据写入mysql并可查询显示曲线图
- 2024-12-02 MySQL 同步复制及高可用方案总结
- 2024-12-02 如何实现用prometheus+grafana实时监控mysql数据库?
- 2024-12-02 (完结无密) Vue3+Uni+Node+MySQL 从零实现跨端小程序的全栈应用
- 2024-12-02 Mysql-cluster搭建
- 2024-12-02 Mysql高可用方案--PXC
- 2024-12-02 MySQL数据库之Haproxy+PXC集群搭建(中)
- 2024-12-02 mysql实现高可用架构之MHA概念篇
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)