我尝试将我的compound.js-application用作(透明)代理服务器。当用户尝试请求外部网站时,应用程序将检查具有该IP地址的用户之前是否已经过身份验证。
如果是,将显示外部网站,否则,将鼓励用户登录。 问题是,当访问数据库对象“User”时,不处理响应。 当我注释掉数据库部分并只使用匿名函数内的代码时,程序按预期工作。
action('exturl', function () {
User.all({ where: { ipaddress: req.ip }}, function(err, users) {
if (users.length > 0) {
this.user = user[0];
var proxy = http.createClient(80, req.headers['host'])
var proxy_request = proxy.request(req.method, req.url, req.headers);
proxy_request.addListener('response', function (proxy_response) {
proxy_response.addListener('data', function(chunk) {
res.write(chunk, 'binary');
});
proxy_response.addListener('end', function() {
res.end();
});
res.writeHead(proxy_response.statusCode, proxy_response.headers);
});
req.addListener('data', function(chunk) {
proxy_request.write(chunk, 'binary');
});
req.addListener('end', function() {
proxy_request.end();
});
} else {
redirect(path_to.login);
}
});
});
我的代码中是否有失败?我不知道我做错了什么。