这是我在 node.js 和node-mysql 模块中执行此操作的代码。
function registerUser(username, password) {
var state = '';
if (!username) { //line #4
state = 'Missing <strong>username</strong>';
return state;
}
if (!password) { //line #8
state = 'Missing <strong>password</strong>';
return state;
}
function addUser() {
statement = 'INSERT INTO data (user_name, user_password) VALUES (\'' + username + '\', \'' + password + '\');';
connection.query(statement, function(err) {
if (err) throw err;
console.log('User ' + username + ' added to database');
})
}
connection.query('SELECT user_name FROM data WHERE user_name=\'' + username + '\'', function(err, result){
if (err) throw err;
if (!result[0]) {
addUser();
console.log('User ' + username + ' added.');
state = 'Success!';
return;
} else {
console.log('User ' + username + ' already exists.');
state = 'User already exists!';
return;
}
})
return state; //line #33
}
在触发第 #4 行和 #8 行上的 if 语句时,state
变量正在按预期分配和返回。然而,在匿名函数中执行的代码connection.query
没有分配state
,第 33 行的返回没有返回任何内容。
我不确定变量范围是否存在问题,或者是否存在connection.query
非阻塞问题,并且在匿名函数之前执行第 33 行的返回。
有什么方法可以使这项工作并state
从匿名函数中返回?
先感谢您。