nodejs的路由管理和数据库操作

Nodejs在企业中多被作为前后端分离的中间层,今天讲解Nodejs 搭建简单服务器,为前端,或者移动端提供接口数据,适合前端开发,或者不想搭建复杂服务器的移动开发者,过程十分简单。

因为我也只看了一天,所以使用的webStorm的node+express模板创建项目,其实完全可以创建个简单项目,然后单独下载express模块和ejs模块进行代码编辑,过程类似。至于nodejs环境配置,webstorm配置,各位辛苦找找,后面我会补上。

新建项目

也可以选择jade模板,原来经常写jsp,所以我就选了ejs模板,容易上手。

webStorm 可以利用这个js文件启动服务, www文件可以修改端口,app.js可以配置路由,引入路由。

Nodejs页面路由配置:

Nodejs的ejsView.js文件:

var express = require('express');
var router = express.Router();
var demo = {"name":"xiaoming","age":22};
router.get('/',function (req, res, next) {
    res.render("ejsView",demo);
});
module.exports = router;

获取Router,res.render中ejsView是ejs模板页面,最终利用module.exports 导出,可供外界调用。

ejsView 模板代码:

<!DOCTYPE html>

<html>

  <head>

    <title>demo</title>

  </head>

  <body>

    <h1>姓名:<%= name %></h1>

    <p>年龄: <%= age %></p>

  </body>

</html>

App.js中引入方式:

var demoRouter  = require('./routes/ejsView');
app.use('/demo1',demoRouter);

启动服务就可以在浏览器中访问ejsView模板对应的界面了。

链接数据库

Nodejs简单的请求mysql数据库方式,首先打开mysql数据库服务,js文件中引入mysql模块,需要利用npm下载mysql模块。

 

var express = require('express');

var mysql = require('mysql');

var router = express.Router();

var demo = {data:null};

router.get('/',function (req, res, next) {

    var con = mysql.createConnection({

        host     : 'localhost',

        user     : 'root',

        password : 'root123456',

        database : 'user'

    });

    try {

        con.connect();

        var sql = 'select * from usertab';

        con.query(sql, function (error, results, fields) {

            console.log(results);

            var demojson = {"data":results};

            res.render("demo3",demojson);

            //res.send(demojson);

            if (error) res.end();

        });

    }catch (error){

        console.log('The solution is:3333 '+error);

    }finally {

        con.end();

    }



});



module.exports = router;

demo3.js

 

var express = require('express');
var mysql = require('mysql');
var router = express.Router();
var demo = {data:null};
router.get('/',function (req, res, next) {
    var con = mysql.createConnection({
        host     : 'localhost',
        user     : 'root',
        password : 'root123456',
        database : 'user'
    });
    try {
        con.connect();
        var sql = 'select * from usertab';
        con.query(sql, function (error, results, fields) {
            console.log(results);
            var demojson = {"data":results};
            res.render("demo3",demojson);
            //res.send(demojson);
            if (error) res.end();
        });
    }catch (error){
        console.log('The solution is:3333 '+error);
    }finally {
        con.end();
    }

});

module.exports = router;

上面说的是mysql,下面讲解MongoDB数据库的增删改查(大体类似,我就简单写了):

var express = require('express');

var router = express.Router();

var mongoClient = require('mongodb').MongoClient;

var url = 'mongodb://localhost:27017/mongodbtesst1';



router.get('/mongodbadd',function (req, res, next) {

   mongoClient.connect(url,function(err,db){

       if (err)throw err;

       console.log("数据库已建立");

       var dbase = db.db("runoob");

       dbase.createCollection('user', function (err, res2) {

           if (err) throw err;

           console.log("创建集合!");

       });

       dbase.collection('user').insertOne({'name':'xiaoming','age':22},function (err,res3) {

           res.send(res3);

           db.close();

       });

   });

});



router.get('/mongodbdelete',function (req, res, next) {

    mongoClient.connect(url,function(err,db){

        if (err)throw err;

        console.log("数据库已建立");

        var dbase = db.db("runoob");

        dbase.collection('user').deleteOne({'name':'xiaoming','age':22},function (err,res3) {

            res.send(res3);

            db.close();

        });

    });

});





router.get('/mongodbadd',function (req, res, next) {

    mongoClient.connect(url,function(err,db){

        if (err)throw err;

        console.log("数据库已建立");

        var dbase = db.db("runoob");

        dbase.collection('user').insertOne({'name':'xiaoming','age':22},function (err,res3) {

            res.send(res3);

            db.close();

        });

    });

});



router.get('/mongodbfind',function (req, res, next) {

    mongoClient.connect(url,function(err,db){

        if (err)throw err;

        console.log("数据库已建立");

        var dbase = db.db("runoob");

        dbase.collection('user').find({}).toArray(function (err,res3) {

            res.send(res3);

            db.close();

        });

    });

});



module.exports = router;

 

想要输出json格式直接利用res.send输出,就可以为client端提供简单接口了。

 

类似nginx的代理配置方式:

app.use("/proxy",proxy({
    target:'http://localhost:8080/dynamicdemo/',
    changeOrigin: true, // proxy websockets
    pathRewrite: {
        '^/proxy/bushu' : '/bushu/eldemo.jsp',     // rewrite path
        '^/proxy/demo' : '/demo/demo1.jsp',     // rewrite path
        '^/proxy/upload' : '/upload/upload.jsp',     // rewrite path
        '^/pagenav/upload' : '/pagenav/demo.jsp',     // rewrite path
    }

}));

//可以利用当前网址,访问dynamicdemo的内容,如果本地测试,需要设置host。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值