新建server目录
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......');
代码如上所示,下面列举自己遇到的问题
- Router.use() requires a middleware function but got a Object
这个是因为在sqlMap、user中未引入 module.exports = router;
- 使用之前要先进行安装express,mysql,body-parser(建议全局安装)
_npm i express -g _
- Error: Can't set headers after they are sent.
这个是因为在接口中,同时使用了两个res造成的
- vue和node同时使用需要解决跨域(目录:config->index.js)
proxyTable: {
'/api': {
target: 'http://127.0.0.1:8082/api/',
changeOrigin: true, // true允许跨域
pathRewrite: {
'^/api': '' // 需要rewrite重写的, 如果在服务器端做了处理则可以不要这段
}
}
},
项目目录结构