节点函数结果未定义
node function result undefined
这个函数check_auth是否总是未定义返回?cookie是可以的结果是可以的,也许问题是异步调用如果是的话,如何修复它?如果功能不满足,我不会连接
function check_auth(req,res){
var cookie=check_cookie(req);
var check_result_ret;
if(cookie){
console.log("exist cookie: "+cookie);
var sql = 'SELECT session_id,username,id FROM session WHERE session_id = ' + connection.escape(cookie);
connection.query(sql, function(err, results) {
if (err) throw err;
if (results.length > 0 && results[0]['session_id'] ==cookie) {
users[results[0]['session_id']]={username:results[0]["username"],id:results[0]["id"]};
check_result_ret=1;
}else{
check_result_ret=0;
}
});
}else{
check_result_ret=0;
}
return check_result_ret;
}
服务器节点部分
switch (path) {
case '/':
var test=check_auth(request,response);
console.log("result",test);
if(test==1){
fs.readFile("main.html", 'utf-8', function (error, data) {
//make somthing
});
}else{
send404(response);
}
break; etc....
问题是check_auth
在调用connection.query
的回调function(err, results)
之前返回check_result_ret
。
我想你需要更多地了解异步编程是如何工作的http://www.sebastianseilund.com/nodejs-async-in-practice
也许这有帮助,
check_auth(req,res){
...do stuff
connection.query(sql, function(err, results) {
if (err) throw err;
if (results.length > 0 && results[0]['session_id'] ==cookie) {
users[results[0]['session_id']]={username:results[0]["username"],id:results[0["id"]};
check_result_ret=1;
}
else{
check_result_ret=0;
}
var test = check_result_ret;
if(test==1){
fs.readFile("main.html", 'utf-8', function (error, data) {
//make somthing afer reading the file
anotherAsyncCall(input,options,function(output){
//do something with output
});
});
}
else{
send404(response);
}
})
相关文章:
- 试图将onChange函数作为道具传递给GrandChlidren,结果是TypeError:这是未定义的
- 解析-为什么user.getSessionToken()返回未定义的结果
- Chrome扩展,Chrome.tabs.query的结果未定义
- 从JSON API结果迭代时未定义
- json-api和错误结果:无法读取属性'长度'的未定义
- 在页面对象文件中验证sendKeys结果会导致未定义的错误(Protractor)
- Meteor js-控制台显示'未定义'即使返回结果
- 获取结果未定义(主干.js)
- 从 Angular 数据工厂中的 HTTP POST 请求接收未定义的结果
- 离子警报 - 检查结果是否未定义
- 使用String.FromCharCode时,jQuery返回未定义的结果
- 解析JSON字符串返回未定义的结果
- Javascript:添加键值对文字,给出未定义的结果
- Javascript/Underscore赢得't跳过未定义的结果
- 为什么这个JavaScript代码的结果是“;未定义”;
- “渲染骨干模型视图”返回未定义的结果
- 流星:防止 findOne() 的未定义结果
- node.js process.env:将 process.env 属性分配给字符串类型中的未定义结果
- JSON “未定义”结果
- 打印数组时的 JavaScript 未定义结果