【发布时间】:2019-04-02 07:55:56
【问题描述】:
我正在编写一个不和谐的机器人来检查数据库中的点,然后返回它们。这是我目前的代码。
function userCheck(id, name) {
date = new Date().toISOString().slice(0, 19).replace('T', ' ');
con.query("SELECT id FROM users WHERE id = "+id, function (err, row) {
if (!(row && row.length) ) {
con.query("INSERT INTO `users` (id,name,rank,points,signup) VALUES ('"+id+"', "+name+", '0', '0' , '"+date+"')"), function (err, result, fields){
if (err) throw err;
}
}else{
//fine
}
});
}
function checkPoints(user){
id = user.id;
name = con.escape(user.username);
userCheck(id, name);
console.log("SELECT points FROM users WHERE id = "+id);
con.query("SELECT points FROM users WHERE id = "+id, function (err, result, fields){
return result[0].points;
});
}
我调用这些函数的代码是这样的:
return message.author.send(checkPoints(message.author));
这会导致 discordjs 错误,因为它试图返回空消息。这意味着我的函数没有正确返回。我一遍又一遍地查看它,它可能只是一个简单的修复,但我看不到它。
提前致谢
【问题讨论】:
-
函数
checkPoints没有return语句,因此返回undefined -
对 API 不熟悉,但我猜测 con.query 是一个异步函数,您在回调函数中返回。该函数在您的结果出现之前就结束了。您需要使用 promise 或 async/await。
-
或者回调会做
-
@Bravo 它确实返回了吗?查询后。它还在查询之前检查用户是否在数据库中。
-
不,它没有......返回在
function (err, result, fields){函数中......返回不是从所有封闭函数返回
标签: javascript mysql node.js discord discord.js