我想将express.js与Flatiron的导向器(路由器)和Resourceful(ODM)一起使用,因为我需要路由表和清理多数据库模式以及验证的好处。 我现在完全转向Flatiron的原因是因为我认为它需要更多的时间而且没有太多的doc材料。
然而,这是我在快递中使用导演的当前方式:
var express = require('express')
, director = require('director');
function hello(){
console.log('Success');
}
var router = new director.http.Router({
'/': {
get: hello
}
});
不幸的是,这不起作用,只给我一个“无法获取/”
那该怎么办?
答案 0 :(得分:5)
var express = require('express')
, director = require('director')
, http = require('http');
var app = express();
var hello = function () {
this.res.send(200, 'Hello World!');
};
var router = new director.http.Router({
'/': {
get: hello
}
});
var middleware = function (req, res, next) {
router.dispatch(req, res, function (err) {
if (err == undefined || err) next();
});
};
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.bodyParser());
app.use(middleware);
app.use(express.static(__dirname + '/public'));
});
http.createServer(app).listen(app.get('port'), function(){
console.log("Express server listening on port " + app.get('port'));
});
有一个示例应用使用快递,resourceful和director here。
如果您有更多疑问,可以在freenode的IRC房间#nodejitsu上询问他们。
答案 1 :(得分:3)
首先,为了使用导演,您需要将其作为中间件包装并传递给表达,如下所示:
app.use(function (req, res, next) {
router.dispatch(req, res, function (err) {
if (err) {
// handle errors however you like. This one is probably not important.
}
next();
});
};
除此之外:你不需要导演使用足智多谋,而快递有自己的路由器(所以你甚至可能不需要/想要导演)。