文档章节

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

刘新全
 刘新全
发布于 2016/02/28 23:01
字数 638
阅读 2769
收藏 3

首先在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中配置的路径):

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

© 著作权归作者所有

刘新全
粉丝 13
博文 57
码字总数 29105
作品 0
兰州
程序员
私信 提问
Node.js+Express+Mysql 实现增删改查

前言 这次选用nodejs+express+mysql 使用http作为客户端,express框架搭建服务端,从而实现数据的增删改查。这篇文章可以算作上篇文章的升级篇,加入了和数据库的交互。 安装 node 直接去官网...

半截的诗
04/02
0
0
在linux下PHP的echo返回字符串的异常情况

在将项目webserver从windows移植到linux下时发现了一个异常情况。 项目情况为服务端使用PHP+nginx搭建的webserver,客户端使用C++,通信使用json字符串,具体流程为服务端将通信的数据对象转换...

水一风云
2014/07/10
628
3
Elide 4.2.4 发布,雅虎开源的应用数据 API 搭建平台

Elide 是一个互联网和移动端应用数据 API 搭建平台,只需要一个简单的 JPA 注释模型 就能帮你轻松搭建 GraphQL 和JSON API web 服务,由雅虎开源。 Elide提供极具规则性,简单易懂的语法规则...

王练
2018/07/15
724
0
C#服务器获取客户端IP地址以及归属地探秘

背景:博主本是一位Windows桌面应用程序开发工程师,对网络通信一知半解。一日老婆逛完某宝,问:“为什么他们知道我的地址呢,他们是怎么获取我的地址的呢?” 顺着这个问题我们的探秘开始:...

张立达
2017/05/03
0
0
Spring4MVC中配置返回json格式数据

Spring4MVC中配置返回json格式数据 相关的jar包支持,jackson。 若是Maven工程,即可直接在pom.xml中添加一下依赖即可: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <arti......

Evyn_lv
2016/06/06
53
0

没有更多内容

加载失败,请刷新页面

加载更多

JS实现使用Math.random()函数生成n到m间的随机数字

Math.random()函数返回0和1之间的伪随机数,可能为0,但总是小于1,[0,1) 生成n-m,包含n但不包含m的整数: 第一步算出 m-n的值,假设等于w 第二步Math.random()*w 第三步Math.random()*w+n...

张兴华ZHero
18分钟前
3
0
入门了解Service Mesh + Istio?从本文开始

下周六,深圳,阔别已久的线下技术沙龙要和你见面啦! 现场有Rancher Labs研发经理demo刚刚发布的Rancher 2.3中的Istio、Windows容器、集群模板等功能及使用,还有k3s首次线下workshop,由R...

RancherLabs
19分钟前
3
0
Gradle 发布 Jar 到 Archiva 时提示不能 Overwriting released artifacts is not allowed

系统提示错误信息: Received status code 409 from server: Overwriting released artifacts is not allowed. 这是在 Archiva 默认的配置下如果你不是使用 snapshot 配置的话,是不允许对仓...

honeymoose
20分钟前
3
0
二维码插件之qrcode.min.js

文件链接百度云地址 https://pan.baidu.com/s/1nWiBuT4Z7WOAMoUEFL8PZg 入门 http://www.jq22.com/jquery-info294 使用jquery.qrcode.min.js实现前台二维码生成(带Logo) https://blog.csd......

木九天
30分钟前
3
0
开源 java CMS - FreeCMS2.8 自定义标签 commentPage

项目地址:http://www.freeteam.cn/ commentPage 根据参数提取评论对象。 参数 说明 siteid 站点id objtype 评论对象类型 objid 评论对象id membername 会员名称 isanonymous 是否匿名 1是 ...

freeteam
30分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部