// 数据库下载可以用这个
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
登录成功