创建nodejs在运行时表达4路由

时间:2016-06-26 12:19:21

标签: node.js express routing

我正在尝试在运行时创建路由。我正在尝试创建一个平面网址结构,所以如果我们添加一篇文章,它会为它创建一个slug并创建一个新的路径。

我使用快递4新路由器功能

app.js

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

var server = http.createServer(app).listen(app.get('port')); 

routes.js

var express             = require('express');
var router              = express.Router();

router.get('/new'    ,site.new);
module.exports = router;

我尝试在路由器中创建一个函数并从app.js调用它,同时在路由器中创建一个函数,同时共享文件中的应用程序实例

module.exports = app; 

并将其称为

var app = require("./app.js");

它似乎没有任何其他想法吗?

更新

我有一个名为helpers.js的文件,我添加了以下函数

  module.exports={

    addRoute:function(){   
    var express             = require('express');
    var router              = express.Router();     
    var app  = require('../app.js');
    var routes  = require('../routes.js');

    router.get('/book', function (req, res) {
      res.send('Hello World!');
    });


    app.use('/book', router);
},

我最终这样做了

addRoute:function(){

    var express             = require('express');
    var router              = express.Router();
    var routes              = require('../routes.js');
    var app                 = require('../start-freedom1.js');

    router.get('/book'  ,function (req, res, next) {
        res.send({"data":"kaki","values":"","errors":""});
    });


    for(var layer in app._router.stack){

        if(app._router.stack[layer].name=="router"){

            app._router.stack[layer].handle.stack.splice(0, 0, router.stack[0]);
            console.log(app._router.stack[layer].handle.stack)
            break;
        }
    }

   // / app.use('/', routes);
},

我有路由器问题(“*”.....在路径文件的末尾所以我总是看到404

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是在URL中传递参数,您可以提取这些参数然后用于进行一些处理。您可以执行以下操作:

  

app.get('/article/:article_id', function(req, res){ art_id = req.params.article_id; //query database using art_id }

如果您想使用查询参数(使用" ..... / article?id = 234"),则必须使用req.query。请查看以下页面http://expressjs.com/en/api.html#req.params

请求参数被认为是最佳实践,因为它们更具可读性且对SEO也很友好。您可以编辑模型以将文章标记存储为字段,但应该是唯一的,这样它们就可以用于查询数据库。