Javascript 函数返回“未定义”
当我等待结果时,我的函数返回未定义。什么是问题Javascript 函数返回“未定义”,javascript,Javascript,当我等待结果时,我的函数返回未定义。什么是问题 getUserDictionary = (user_id) => { connection.connection.query("SELECT eng_word, ru_word FROM `dictionary` where user_id="+user_id, function (error, results, fields) { if (error) throw error; console.log(resu
getUserDictionary = (user_id) => {
connection.connection.query("SELECT eng_word, ru_word FROM `dictionary` where user_id="+user_id,
function (error, results, fields) {
if (error) throw error;
console.log(results);
return results;
});
}
console.log(getUserDictionary(1));
结果显示了我想要的,数据库连接没有问题。
但最后一个console.log with函数返回未定义的您将面临SQL注入攻击
不要这样做:从user\u id=+user\u id的字典中选择eng\u word和ru\u word
如果这只是一个宠物项目,好吧,但是如果你把它开放给互联网,任何人都可以删除你的数据库。使用事先准备好的语句。如果您正在使用,您可以将其作为当前查询的替代:
connection.query('SELECT eng_word, ru_word FROM dictionary WHERE user_id = ?', [user_id], function (error, results, fields) {
无论如何。。。
您的问题是connection.connection.query是一个异步函数。如果希望它能够同步运行,可以使用ES6中支持的异步/等待模式。否则,您可以构造代码以响应查询返回
下面是使用async/await时的情况:
你可以像这样使用它
async () => {
let results = await getUserDictionary(0);
console.log(results);
}
等待需要位于异步函数内,以防止出现workSQL注入漏洞。令人惊讶的是,还没有人提到这件事。
async () => {
let results = await getUserDictionary(0);
console.log(results);
}