Create a new server directory
server
------api // 接口文件夹
---------user.js // 接口文件
------db // 数据库文件夹
---------db.js // 数据库的连接
---------sqlMap.js // sql方法
------app.js // 服务的入口 使用node app.js 进入访问
user.js
var models = require('../db/db');
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
var $sql = require('../db/sqlMap');
var conn = mysql.createConnection(models.mysql);
conn.connect();
router.get('/signin',(req, res) => {
let sql = $sql.user.login;
let params = req.body;
conn.query(sql, [params.username, params.userpsw], (err, result) => {
if(err) {
res.send(err);
}
if(result) {
console.log(result);
res.json({status:200,data:result});
}
})
})
router.get('/register',(req, res) => {
let sql = $sql.user.register;
let params = req.body;
conn.query(sql, [params.username, params.userpsw], (err, result) => {
if(err) {
res.send(err);
}
if(result) {
console.log(result)
}
})
})
router.get('*', (req, res) => {
res.send('404');
})
module.exports = router;
db.js
module.exports = {
mysql: {
host: 'localhost',
user: 'root',
password: '',
database: 'sch',
port: '3306'
}
}
sqlMap.js
var sqlMap = {
user: {
login: 'select * from admin;',
register: 'insert into admin(username, userpsw) values(?, ?)',
}
}
module.exports = sqlMap;
app.js
const userApi = require('./api/user');
const fs = require('fs');
const path = require('path');
const bodyParser = require('body-parser');
const express = require('express');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
//注册api路由
app.use('/api', userApi);
// 监听端口
app.listen(8082);
console.log('success listen at port:8082......');
The code is shown above, and the problems encountered are listed below
- Router.use() requires a middleware function but got a Object
This is because module.exports = router is not introduced in sqlMap and user;
- Install express, mysql, body-parser before use (recommended to install globally)
_npm i express -g _
- Error: Can't set headers after they are sent.
This is because in the interface, two res are used at the same time.
- The simultaneous use of vue and node needs to solve cross-domain (directory: config->index.js)
proxyTable: {
'/api': {
target: 'http://127.0.0.1:8082/api/',
changeOrigin: true, // true允许跨域
pathRewrite: {
'^/api': '' // 需要rewrite重写的, 如果在服务器端做了处理则可以不要这段
}
}
},
Project directory structure