2015-05-30 105 views
0

我想实现一个小cms只是为了它的乐趣,我想为用户能够从cms创建网站和页面。从数据库数据动态路由

例如,会有一些表单询问用户“站点”名称,在该站点下用户将能够创建深度为n级的站点树,并将其保存在数据库中。

ex:“blah/article”,“blah/blah/blah/article”。

我的问题是我将如何在expressjs中实现这样的路由? 如何根据用户创建的内容和每个站点动态地声明我的路线?

如果例如我有2个网站:site1和site2。

本地主机:3000/site1的/ somepathhere /等等/等等

本地主机:3000 /站点2/someotherpathhere /等等/等等/等等

我想为每个站点的路由是动态的(不知道是什么用户将创建),我希望每个站点路由只适用于该站点,而不是全局。

到目前为止,我玩弄了一些代码,但我不确定是否有一些更好的方法来实现这一点。

app.param('site', function(req, res, next, site) { 
    req.site = site; 
    next(); 
}); 


app.get('/:site', function(req, res) { 

    res.send(req.site + "<br><pre>" + JSON.stringify(req.params, null, 4) + "</pre>"); 

}); 

app.get('/:site/*', function(req, res) { 

    res.send(req.site + "<br><pre>" + JSON.stringify(req.params, null, 4) + "</pre>"); 

}); 

回答

0

表达路由,基本上是打(解析和分析)与字符串。你可以实现一个URL解析器,它将采用从数据库中读取的路由。