我正在尝试为从MySQL表中输出整数的Discord机器人执行命令。
我尝试使用async / await,promise,回调进行此操作,但结果始终相同。 我在这里再次尝试用诺言,因为过去它以某种方式起作用。现在不会了。
这里的函数返回promise:
exports.checkAccess = (user) => {
return new Promise((resolve,reject) => {
sql.condb.query("SELECT `accessLevel` FROM `users` WHERE `DiscordID` = '" + user + "' LIMIT 1", function(err,rows){
if(err) reject(err);
else resolve(rows);
})
});
}
这是将结果分配给accessLevel变量的代码:
let accessLevel = -1;
cmds.checkAccess(message.author.id).then(rows=>{
accessLevel = rows[0].accessLevel;
}).catch((err)=>{
console.log(err);
});
Catch函数捕获错误,提示“ TypeError:无法读取未定义的属性'accessLevel'”。
答案 0 :(得分:1)
您的查询似乎不返回任何结果,而是返回未定义的Promise。
我建议您将查询放入变量中,并使用console.log获取生成的查询,以便您可以检查最终查询。
let query = "SELECT `accessLevel` FROM `users` WHERE `DiscordID` = '" + user + "' LIMIT 1";
console.log(query);
尝试在您的mysql编辑器中选择stdout查询。