// 数据库下载可以用这个
DBeaver安装与使用教程(超详细安装与使用教程),好用免费的数据库管理工具_dbeaver使用教程-CSDN博客
模块化
(1)新建一个叫Dao的文件夹,存接数据库代码
// 参考数据库
(2)下载依赖
npm install mysql
(3)写连接数据库代码
数据库密码不能用123456,不安全
模块化要用中间件的写法
中间件语法
var app = express();
app.use(function (req, res, next) {next();
})
Dao->index.js
/*** 数据库连接*/
const mysql = require('mysql');
const DataBase = mysql.createConnection({host: 'localhost',user: '用户名',password: '密码',database: '数据库名字',
})
//连接方法异步
const goconnect = ()=>{DataBase.connect();setTimeout(()=>{console.log('数据库连接成功');},2000)
}
//暴露出数据库去
module.exports={connect:goconnect,db:DataBase}
(4)写接口文件
创建文件1
const express = require('express')
const router = express.Router()
router.get('login/', (req, res) => {})
module.exports = router
创建文件2
const express = require('express');
const router = express.Router();
const Dao = require('../Dao/index');
router.post('/login', (req, res) => {const sql = "SELECT password from user where username = ?"Dao.db.query(sql,req.body.username,(err,result)=>{console.log(result,'用户名密码');})res.send('hello')
})
module.exports = router
(5)在index里进行管理和使用
/*** 1.引入一个express框架* 2.在加载所有服务模块前,要先连接数据库* 安装body-parser中间件解析JSON数据,引入*/
const express = require('express');
const app = express();
const DataBase = require('./Dao/index');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
DataBase.connect();//连接数据库
/**
* 3.中间件,使用Service的接口 发送网络请求
*/
app.use('/api/Login',require('./Service/login'))
app.use('/api/User',require('./Service/user'))
/**
* 4.规定服务的端口号
*/
app.listen(3000,()=>{console.log('server is running at http://localhost:3000');
})
(6)router的使用
const express = require('express');
//引用定义router
const router = express.Router();
//连接数据库
const Dao = require('../Dao/index');
//获取数据库的用户名密码等逻辑
router.post('/login', (req, res) => {const sql = "SELECT password from user where username = ?"Dao.db.query(sql,req.body.username,(err,result)=>{console.log(result,'用户名密码');})res.send('hello')
})
module.exports = router
(7)测试
测试成功
(8)实现登录
user.js
const express = require('express');
const router = express.Router();
const Dao = require('../Dao/index');
router.post('/login', (req, res) => {const sql = "SELECT password from user where username = ?"Dao.db.query(sql,req.body.username,(err,result)=>{// console.log(result,'用户名密码');if(req.body.password == result[0].password){res.send({code:200,data:{msg:'登录成功',data:result}})}else{res.send({code:200,data:{msg:'登录失败',data: []} })}})
})
module.exports = router
测试返回(一定看好是不是数据库表内的账号密码)
(9)功能实现
import axios from "./request";
//这是首页数据的接口
export const getApiHomeData=(param)=>{return axios.request({url:'/home/getHomeData',method:'get',data:param})
}
export const login = (data)=>{return axios.request({url:'/api/User/login',method:'post',data:data})
}
登录页面参数引入
import { login } from '../../api/api'
const onSubmit = async value => {const res = await login({username:data.username,password:data.password})console.log(res,"登录日志");if(res.msg==='登录成功'){router.push('/')Toast('登录成功')}else{Toast('用户名或密码错误')}};
报了跨越的错误
解决方法
在nodejs内允许访问域名,header,和跨域的请求的方式
index.js
/*** 1.引入一个express框架* 2.在加载所有服务模块前,要先连接数据库* 安装body-parser中间件解析JSON数据*/
const express = require('express');
const app = express();
const DataBase = require('./Dao/index');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
DataBase.connect();//连接数据库
/*** 3.中间件,使用Service的接口 发送网络请求*/
/**配置公共请求响应头 */
app.all('*',(req,res,next)=>{// console.log('请求进来了');res.header("Access-Control-Allow-Origin","*");//允许跨域域名res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');//允许跨域的header类型res.header("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");//允许跨域的请求方式next();
})
app.use('/api/Login',require('./Service/login'))
app.use('/api/User',require('./Service/user'))
app.use('/api/home',require('./Service/home'))/*** 4.规定服务的端口号*/
app.listen(3000,()=>{console.log('server is running at http://localhost:3000');})
启动
node .\index.js
登录成功