javascript - NodeJS在MySQL查询函数中返回“未定义”
问题描述
我有一个查询 SQL 以获取名为 Prefix 的字符串的函数。
function getPrefix(Guild) {
let query = "SELECT Prefix FROM Guilds WHERE GuildId=?";
Connection.query(query, [Guild.id], (err, result) => {
if (err) throw err;
return result[0].GuildPrefix;
});
};
每当我打印出前缀 ( console.log(result[0].Prefix);
) 时,它都会很好地记录它 - 但是,每当我返回它然后尝试调用该函数时,它总是返回未定义的。
我正在使用 Node JS 版本 10.15.1 并且我在 Debian 的 Raspbian 延伸上使用 MariaDB 版本 10.1.37。如果我遗漏了任何其他信息,请发表评论。谢谢。
解决方案
在 Nodejs 中,与 mysql 相关的函数始终是异步的,这意味着它们要么不返回任何内容,要么返回 undefined。
所以解决方案是使用回调函数。
例如。
function getPrefix(Guild, callback) {
let query = "SELECT Prefix FROM Guilds WHERE GuildId=?";
Connection.query(query, [Guild.id], (err, result) => {
if (err){
callback(JSON.stringify(err));
};
callback(JSON.stringify(result));
});
};
推荐阅读
- pytorch - AWS SageMaker 无法加载 PyTorch .pth 权重
- python - 如何在 Python 中将列表中的项目添加到字典中,
- c# - C# 总结列表列表中的值
- react-native - 如何在 React Native 应用程序中实现 Google 一键登录?
- reactjs - 如何将 React.forwardRef 与 @material/react-ripple 一起使用?
- django - 当我尝试从系统中卸载 django 时,如何解决此问题?
- javascript - 如果在 RxJS 的过滤器运算符中满足条件,如何更改变量值
- python - 我在 django 中的密码重置视图仅在用户登录时显示,但在注销时不显示
- dart - 如何从 dart 中的 stdin 输入开始处理和读取参数?
- tomcat9 - 如果 Tomcat 停止,删除 catalina.out 是否安全?