位置: IT常识 - 正文

手把手教你用vue + node 作后端连接数据库(手把手教你用荣耀手机)

编辑:rootadmin
手把手教你用vue + node 作后端连接数据库 教程的顺序:

推荐整理分享手把手教你用vue + node 作后端连接数据库(手把手教你用荣耀手机),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:手把手教你用纸叠玫瑰花,手把手教你用纸叠玫瑰花,手把手教你用砖砌橱柜,手把手教你用电脑写文章,手把手教你用电脑上网络,手把手教你用电脑写文章,手把手教你用砖砌橱柜,手把手教你用二氧化氯给鱼缸消毒,内容如对您有帮助,希望把文章链接给更多的朋友!

1、编写node服务器

2、用node连接数据库

3、编写前端页面

4、前后端交互

ok,让我们开始吧

1、编写node服务器

先下载几个依赖包

express(用于网络连接) 

npm i express --save

cors(用于处理跨域问题)

npm i cors --save

接下来好还需要处理一下前端传过来的数据,对于get请求无需特殊处理,但是对于post请求发送的数据类型取决于post请求头Content-type的类型。常见三种

multipart/form-data 、 application/x-www-form-urlencode 、 application/json(最常用)

这几种类型想要了解更多可自行百度

为了处理这几种类型需要下载几个依赖包

npm i body-parser --savenpm i connect-multiparty --save 新建 index.js 文件/* * @Author: maximing * @Date: 2022-12-28 09:06:42 * @LastEditTime: 2022-12-28 11:23:40 * @LastEditors: your name * @Description: 请添加描述 * @FilePath: \domysql\src\server\index.js */const express = require('express')const app = express()const cors = require('cors') //解决跨域问题app.use(cors())const bodyParser = require('body-parser')const multiparty = require('connect-multiparty')// 处理 x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: true }))// 处理 mutipart/form-dataapp.use(multiparty())// 处理 application/jsonapp.use(bodyParser.json())//一个简单的测试接口app.get('/test',(req,res)=>{ res.send('测试用的接口')})//监听node服务器的端口号app.listen(3000, () => {console.log('恭喜你,服务器启动成功')})

 接下来启动node服务器。进入对应的index.js所在的文件夹,在搜索栏输入cmd按回车进入终端

启动刚才编写的index.js文件

然后打开浏览器输入 localhost:3000/  

 3000端口号是我们刚才监听时使用的,是我们的node服务的端口号

到这我们已经完成了服务器的搭建,并且写了一个简单的接口 !

2、用node连接数据库

先下载一个依赖 mysql (用于连接数据库)

npm i mysql --save

新建一个mysql.js文件,和index.js 同级目录哦

/* * @Author: maximing * @Date: 2022-12-28 09:33:17 * @LastEditTime: 2022-12-28 09:52:00 * @LastEditors: your name * @Description: 请添加描述 * @FilePath: \domysql\src\server\mysql.js */const mySql = require('mysql')//连接数据库的配置信息const db_config = { host: 'localhost', //本地都是localhostuser: 'root', //账户名password: '12345', //密码port: '3306', //端口号database: 'demo' //数据库的名称}function conMysql(sql) { //创建数据库连接池let Myconnect = mysql.createConnection(db_config)//开始连接数据库Myconnect.connect(function (err) {if (err) {console.log(`myqsl连接失败:${err}!`)} else {console.log('恭喜哦,mysql连接成功哦')}})//因为query查询是一个异步操作,所以用promise来操作return new Promise((resolve, reject) => { //query() 函数用于mysql语句查询connect.query(sql, (err, result) => {if (err) {reject(err)} else {let res = JSON.parse(JSON.stringify(result))closeMysql(connect) //调用函数关闭mysql连接resolve(res)}});})}//关闭mysql数据库的函数function closeMysql(Myconnect) {Myconnect.end((err) => {if (err) {console.log(`mysql关闭失败:${err}!`)} else {console.log('mysql关闭成功')}})}//导出conMysql函数exports.conMysql = conMysql手把手教你用vue + node 作后端连接数据库(手把手教你用荣耀手机)

连接数据库的函数已经写好并导出,接下来就要在刚刚写完的index.js文件里接着往下写一个简单数据库查询接口

/* * @Author: maximing * @Date: 2022-12-28 09:06:42 * @LastEditTime: 2022-12-28 11:23:40 * @LastEditors: your name * @Description: 请添加描述 * @FilePath: \domysql\src\server\index.js */const express = require('express')const app = express()const cors = require('express') //解决跨域问题app.use(cors())const bodyParser = require('body-parser')const multiparty = require('connect-multiparty')// 处理 x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: true }))// 处理 mutipart/form-dataapp.use(multiparty())// 处理 application/jsonapp.use(bodyParser.json())//导入我们上一步写的连接数据库的函数const {conMysql} = require('./mysql')//创建统一的返回报文对象class Response {constructor(isSucceed, msg, code, data) {this.isSucceed = isSucceed;this.msg = msg;this.code = code;this.data = data;}}//一个简单的测试接口app.get('/test',(req,res)=>{ res.send('测试用的接口')})//一个简单的接口,查询数据库中的信息app.get('/getUser', (req, res) => {let sql = 'select * from test'conMysql(sql).then(result => {res.send(result)})})//监听node服务器的端口号app.listen(3000, () => {console.log('恭喜你,服务器启动成功')})

贴一下我的数据库的表

 在浏览器输入我们刚才写的接口地址

 ok,到这我们已经成功连接上数据库并进行了数据的查询

3、编写前端页面

用vue的脚手架新建一个vue项目

贴一下我的项目目录

 写一个前端展示的界面

<template><div> <input v-model="user" placeholder="输入用户名查询用户信息"><button @click="getUser">点击获取用户信息</button></div></template><script>export default {name: 'userInfor',data() {return {userInfo: '',user: '',}},methods: {},created() {}}</script><style></style>

接下来我们还需要安装axios依赖包,用于发送网络请求给后端

npm i axios --save

对axios二次封装

在axios文件夹下新建一个index.js 文件

import Axios from 'axios'const instance = Axios.create({baseURL: '/api'})instance.interceptors.request.use((config) => {console.log(config, '发送请求前config信息')return config}, err => {return Promise.reject(err)})instance.interceptors.response.use((res) => {console.log('接受的数据')return res.data}, err => {return Promise.reject(err)})export default instance

 在同级目录下新建一个api.js文件,用于统一处理接口

import request from './index'//获取用户信息接口export const getUserInfo = (data) => request.get('/getUserInfo', { params: data })

在刚才我们写node服务器的index.js文件里面添加一个根据用户id查询信息的后端接口

/* * @Author: maximing * @Date: 2022-12-28 09:06:42 * @LastEditTime: 2022-12-28 11:23:40 * @LastEditors: your name * @Description: 请添加描述 * @FilePath: \domysql\src\server\index.js */const express = require('express')const app = express()const cors = require('express') //解决跨域问题app.use(cors())const bodyParser = require('body-parser')const multiparty = require('connect-multiparty')// 处理 x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: true }))// 处理 mutipart/form-dataapp.use(multiparty())// 处理 application/jsonapp.use(bodyParser.json())//导入我们上一步写的连接数据库的函数const {conMysql} = require('./mysql')//创建统一的返回报文对象class Response {constructor(isSucceed, msg, code, data) {this.isSucceed = isSucceed;this.msg = msg;this.code = code;this.data = data;}}//一个简单的测试接口app.get('/test',(req,res)=>{ res.send('测试用的接口')})//一个简单的接口,查询数据库中的信息app.get('/getUser', (req, res) => {let sql = 'select * from test'conMysql(sql).then(result => {res.send(result)})})//根据前端传过来的id查询数据库中对应的id的信息app.get('/getUserInfo', (req, res) => {let sql = `select * from test where user = '${req.query.user}'`conMysql(sql).then(result => {let response = new Response(true, '获取成功', 200, result)res.send(response)}).catch(err => {res.status(500).send('数据库连接出错!')})})//监听node服务器的端口号app.listen(3000, () => {console.log('恭喜你,服务器启动成功')})

贴一下我的目录

 ok,到这里我们已经把前端的接口也写完了

接下来我们处理跨域问题,为什么跨域了,因为前端一般用的本地端口是8080,我们刚刚写的node服务器用的接口是3000,不同的端口就出现了跨域。

我们在根目录下新建一个 vue.config.js 文件,一般用脚手架建立的vue项目都自带这个文件

const { defineConfig } = require('@vue/cli-service')module.exports = defineConfig({ transpileDependencies: true,})module.exports = { devServer: { proxy: { '/api': { //target 我们要连接的后端地址 target: 'http://localhost:3000', changeOrigin: true, //是否跨域 pathRewrite: { '^/api': '' } }, }, },}

ok,到这一步跨域也搞定了,接下来就是前后端交互了

4、前后端交互

在刚才写的前端展示界面调用接口

<template><div> <input v-model="user" placeholder="输入用户名查询用户信息"><button @click="getUser">点击获取用户信息</button><span>{{userInfo}}</span></div></template><script>//导入我们之前写的接口import { getUserInfo } from '@/axios/api'export default {name: 'userInfor',data() {return {userInfo: '',user: '',}},methods: {async getUser() {let res = await getUserInfo({ user: this.user })console.log(res, '/api', '获取的用户信息')this.userInfo = res.data},},created() {}}</script><style></style>

启动前端项目,启动node服务,打开浏览器进入项目输入数据库中的任意一个user

 ok,到这里整个前后端已经完成交互

结束

到这里整个教程就已经结束了,如果实践当中有什么报错或不懂的地方一定要自己去百度及时了解新知识。

本文链接地址:https://www.jiuchutong.com/zhishi/300059.html 转载请保留说明!

上一篇:详解Inception结构:从Inception v1到Xception(critical_section 结构)

下一篇:Spring Cloud Alibaba全家桶(一)——Spring Cloud Alibaba介绍(springcloud阿里巴巴)

  • 你该知道的短信营销知识(你该知道的短信是什么)

    你该知道的短信营销知识(你该知道的短信是什么)

  • 苹果手机怎么编辑xlsx表格(苹果手机怎么编辑照片写字)

    苹果手机怎么编辑xlsx表格(苹果手机怎么编辑照片写字)

  • 华为自动开关机怎么设置(华为自动开关机在哪里设置方法)

    华为自动开关机怎么设置(华为自动开关机在哪里设置方法)

  • 微信服务电话人工服务是多少(微信服务电话人工服务上班时间)

    微信服务电话人工服务是多少(微信服务电话人工服务上班时间)

  • 苹果屏幕颜色怎么设置(苹果屏幕颜色怎么调整白)

    苹果屏幕颜色怎么设置(苹果屏幕颜色怎么调整白)

  • 快手机构邀约是什么意思(快手机构邀约是诈骗吗)

    快手机构邀约是什么意思(快手机构邀约是诈骗吗)

  • 手机网速正常电脑很慢(手机网速正常电脑只有十几k)

    手机网速正常电脑很慢(手机网速正常电脑只有十几k)

  • 网盘是什东西(网盘是啥东西)

    网盘是什东西(网盘是啥东西)

  • 电脑的打字切换输入法不见了(电脑的打字切换输入法)

    电脑的打字切换输入法不见了(电脑的打字切换输入法)

  • 小米手机亮度调到最高还是很暗(小米手机亮度调节bug)

    小米手机亮度调到最高还是很暗(小米手机亮度调节bug)

  • QQ自助冻结几天解除(qq自助冻结是人为吗)

    QQ自助冻结几天解除(qq自助冻结是人为吗)

  • 快手管理员是干嘛的(快手管理员是干什么的)

    快手管理员是干嘛的(快手管理员是干什么的)

  • 无响应已超时什么意思(无响应 已超时)

    无响应已超时什么意思(无响应 已超时)

  • 家教机充不了电的原因(家教机显示充电但没充进去)

    家教机充不了电的原因(家教机显示充电但没充进去)

  • 录像怎么美颜(小米手机录像怎么美颜)

    录像怎么美颜(小米手机录像怎么美颜)

  • word文档的扩展名叫什么(word文档的扩展名有哪些)

    word文档的扩展名叫什么(word文档的扩展名有哪些)

  • win版和mac版什么意思(win版本和mac版本)

    win版和mac版什么意思(win版本和mac版本)

  • 字节数是什么(字节数是什么单位)

    字节数是什么(字节数是什么单位)

  • 苹果11的材质(苹果11的材质好还是14)

    苹果11的材质(苹果11的材质好还是14)

  • word三线表格怎么求和(word三线表格怎么制作怎么有虚线)

    word三线表格怎么求和(word三线表格怎么制作怎么有虚线)

  • 5g是换手机卡还是手机(5g是换手机卡还是换手机)

    5g是换手机卡还是手机(5g是换手机卡还是换手机)

  • iPhone如何设置小圆点(iphone如何设置小孩玩手机时间)

    iPhone如何设置小圆点(iphone如何设置小孩玩手机时间)

  • 新版excel打印预览在哪里(新版excel打印预览怎么设置)

    新版excel打印预览在哪里(新版excel打印预览怎么设置)

  • 网易新闻如何删除评论(网易新闻如何删除自己的跟帖)

    网易新闻如何删除评论(网易新闻如何删除自己的跟帖)

  • 虚拟机中如何将Win10更新到Win11?虚拟机上Win10升级到Win11的详细图文教程(虚拟机中如何将文件移动到普通用户的家目录下)

    虚拟机中如何将Win10更新到Win11?虚拟机上Win10升级到Win11的详细图文教程(虚拟机中如何将文件移动到普通用户的家目录下)

  • 微软的人工智能 Copilot 到底有多强大?带你来体验一下(微软的人工智能ChatGPT)

    微软的人工智能 Copilot 到底有多强大?带你来体验一下(微软的人工智能ChatGPT)

  • C++ 手撸简易服务器(完善版本)(c++简易游戏)

    C++ 手撸简易服务器(完善版本)(c++简易游戏)

  • Vue中computed和watch区别(vue中computed和watch)

    Vue中computed和watch区别(vue中computed和watch)

  • 农产品抵扣怎么算
  • 山东省注册税务师协会官网
  • 关税完税价格计算消费税公式
  • 设备使用率怎么计算公式
  • 财务报表中利润率怎么算
  • 自建的固定资产可以抵扣吗
  • 中介行业风险
  • 股票盈亏怎么计算app
  • 企业作为二房东要交什么税
  • 预付账款是付没付钱
  • 财产租赁合同印花税计税依据含税吗
  • 房租收入应该计入什么会计科目
  • 个人去税务局能开什么类型的发票
  • 建筑企业未开票收入增值税申报表怎么填写
  • 发票添加商品编码怎么填
  • 增资印花税缴纳时间
  • 农副产品税率及范围
  • 案例讲解:当年度未及时取得有效凭证的相关成本、费用涉税处理
  • 建筑发票怎么抵税
  • 分公司利润如何分红
  • 广播影视服务需要交文化事业建设费吗
  • 出租包装物和出借包装物的摊销额
  • 带息商业汇票的利息分录?
  • 硬盘的日常维护需要做到什么?
  • 收到的投资属于什么科目
  • 贷款利息 发票
  • vue watch监听vuex数据
  • uniapp安装插件
  • 企业延期收款
  • 固定资产可以直接入账吗
  • 合伙人资本属于股东吗
  • PHP基于国秘s2m加解密的处理方式
  • el-upload上传文件携带参数
  • chrome 浏览器插件开发
  • 微信小程序开发平台
  • 毕业设计基于51单片机多功能电子钟的设计
  • 嵌套循环语句
  • 应收账款结账损失怎么算
  • 公司购买的房屋怎么入账
  • mysql的联合查询
  • mongodb基础命令
  • sql server go语句
  • 结转在建工程的会计分录
  • 财务往来账对账总结
  • 小规模个体工商户怎么交税
  • 现汇跟承兑有什么区别
  • 营业外收入交企业所得税吗
  • 车间杂工工资如何结算
  • 公司账户的钱怎么合理的转出来
  • 自产的产品作为福利增值税
  • 装修费用怎么结算
  • 手工账的做账流程图
  • sql数据库怎样批量添加数据
  • 查看mysql执行计划关键字
  • windowsxp锁屏密码怎么设置
  • 复制糸统
  • 电脑2003系统
  • Windows Server 2003环境更改Boot.ini文件
  • 修改linux系统ip
  • AquariumDesktop.exe进程危险吗 AquariumDesktop是什么进程
  • 如何通过mac找到具体地址
  • mac休眠怎么设置
  • win7组合键失效
  • win10搭建ftp服务器的步骤
  • meta 标签
  • 淘宝店铺首页导航栏css
  • html5+javascript实现简单上传的注意细节
  • android应用结构包括哪些
  • python 类的用法
  • js实现回文
  • 修改应用程序图标
  • 房产税什么时候开始征收
  • 电梯维修费的税率
  • 月收入28000的个税
  • 浙江省网上税务局申报
  • 公司年会抽奖发言
  • 简述进料加工对中国的意义
  • 跨县调动工作流程
  • 肉类零售
  • 补缴往年土地使用税怎么做分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设