windows搭建nodejs+express+mysql返回json数据

首先在windows下安装nodejs和mysql(这里不介绍),

安装好nodejs后,安装express。npm install -g express(全局,需要在path中添加变量) 或npm install  express(在当前文件夹中,推荐)

注意:我用的是webstorm,他可以自动帮你创建express和生成目录结构。如图:

目录结构:

其中:models文件夹,db.js和sqlMapping.js是我添加的,其中models是数据逻辑层,相当于dao层,db配置的是mysql,sqlMapping是sql语句根据自己可要可不要。

要安装nodejs和mysql的驱动,npm install mysql --save.注意最好在项目文件夹下运行命令,那么mysql就会安装在node_modules中 ,--save 参数是把项目所依赖的包添加到package,json中:


{ "name": "nodejsweb", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www"  }, "dependencies": { "body-parser": "~1.13.2", "cookie-parser": "~1.3.5", "debug": "~2.2.0", "express": "~4.13.1", "jade": "~1.11.0", "morgan": "~1.6.1", "mysql": "^2.10.2", "serve-favicon": "~2.3.0"  }
}


mysql就会添加进去。其中我是参考网上一篇配置的mysql。http://www.tuicool.com/articles/JfqYN3I 可是有错误,我修改了一下。

db.js


module.exports = {
    mysql: {
        host: '127.0.0.1',
        user: 'root',
        password: 'root',
        database:'mahout',
        port: 3306
    }
};
sqlMapping.js



var user = {
    insert:'INSERT INTO book(id, name, author) VALUES(0,?,?)',
    update:'update book set name=?, age=? where id=?',
    delete: 'delete from book where id=?',
    queryById: 'select * from book where id=?',
    queryAll: 'select * from book'
};

module.exports = user;
在app.js中添加路由,即访问的路径相当于springmvc中的controller(name="");添加一下代码:



var book = require('./routes/book');
app.use('/book', book);



这个不难,仿照app.js中的代码格式写就行了。其中./routes/book要在routes文件夹下创建book.js:也可以不创建,直接在app.js中配置(不推荐,结构不清晰)


book,js


var express = require('express');
var router = express.Router();
var book= require('../models/Book');
/* GET users listing. */
router.get('/', function(req, res, next) {
    book.queryAll(req, res, next);
});
router.get('/queryById', function(req, res, next) {
    book.queryById(req, res, next);
});

module.exports = router;
其中要在models创建Book.js即数据逻辑层:


Book.js


var mysql = require('mysql');
var $db = require('../db');
var $sql = require('../SqlMapping');

// 使用连接池,提升性能
var pool  = mysql.createPool( $db.mysql);

// 向前台返回JSON方法的简单封装
var jsonWrite = function (res, ret) {
    if(typeof ret === 'undefined') {
        res.json({
            code:'1',
            msg: '操作失败'
        });
    } else {
        res.json(ret);
    }
};

module.exports = {
    queryAll: function (req, res, next) {
        pool.getConnection(function(err, connection) {
            connection.query($sql.queryAll, function(err, result) {
                jsonWrite(res, result);
                connection.release();
            });
        });
    },
    queryById: function (req, res, next) {
        var id = +req.query.id;
        pool.getConnection(function(err, connection) {
            connection.query($sql.queryById, id, function(err, result) {
                jsonWrite(res, result);
                connection.release();

            });
        });
    }

};
其中数据表book字段有name,author,id(主键)。


运行http://127.0.0.1:3000/book

运行http://127.0.0.1:3000/book/queryById?id=1(queryById是在book.js中配置的路径):

其中可能对初学者有很多疑惑的地方,即项目目录各个功能及文件配置的地方。不懂的地方留言,有错的话会及时修改。

转载于:https://my.oschina.net/liuxinquan/blog/625575

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值