当我等待"result“时,我的函数返回"undefined”。什么是问题?
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));"results“显示了我想要的(数据库连接没有问题)。但带有函数的最后一个console.log返回未定义
发布于 2019-08-08 09:04:17
您使自己很容易受到SQL注入攻击
不要这样做:"SELECT eng_word, ru_word FROM dictionary where user_id="+user_id
如果这只是一个宠物项目,很好,但如果你将它开放给互联网,任何人都可以删除你的数据库。请改用预准备语句。如果您使用的是mysqljs,您可以将以下内容作为当前查询的替代:
connection.query('SELECT eng_word, ru_word FROM dictionary WHERE user_id = ?', [user_id], function (error, results, fields) {不管怎样..。
您的问题是connection.connection.query()是一个异步函数。如果您希望它同步运行,您可以使用ES6中支持的async/await模式。否则,您可以构造代码以响应来自query()的返回。
下面是使用async/await时的样子
getUserDictionary = (user_id) => {
return new Promise((resolve, reject) => {
connection.connection.query("blah blah blah",
function (error, results, fields) {
if (error) {
reject(error);
return;
}
console.log(results);
resolve(results);
});
});
};你可以像这样使用它
async () => {
let results = await getUserDictionary(0);
console.log(results);
}https://stackoverflow.com/questions/57403898
复制相似问题