使用node搭建服务器

新建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重写的, 如果在服务器端做了处理则可以不要这段
        }
      }
    },

项目目录结构

输入图片说明

扫描二维码关注公众号,回复: 151660 查看本文章

猜你喜欢

转载自my.oschina.net/u/2929937/blog/1789425
今日推荐