我正在使用域名并尝试使用几个Express域中间件包:
https://github.com/brianc/node-domain-middleware https://github.com/baryshev/connect-domain
根据第一篇文章中的使用文档,我应该可以访问process.domain
,但它未定义。
我基本上是在我的app.js
中这样做的var express = require('express'),
domains = require('express-domain-middleware');
var app = exports.app = express();
app.use(domains);
在控制器中:
exports.index = function(req, res, next) {
console.log(process.domain); //undefined
};
是什么给出了?
答案 0 :(得分:2)
您可能需要检查(使用console.log
或断点)以确保在调用index
方法之前发生此行:
express.use(domain);
我不知道你的应用是如何构建的,但app.use
的顺序通常就是这样。
您的app.get('/someurl', yourcontroller.index)
应该在app.use(domain)
之后。
答案 1 :(得分:0)
好的 - 这是由于我的中间件中有一个Mongo调用。显然,所有数据库调用都必须被包装。
var d = domain.create();
d.run(function () {
client.query('...', d.intercept(function (rows) {
// ... use rows (note, first arguments error was "intercepted" by the domain)
}));
});