从函数中获取值
Getting value from a function
我的代码可以工作,但不是我想要的那样。
不和谐的输出是 Your name is undefined
。
我希望它是 Your name is Boanak
。我需要它是它从 table 获得的值。
我正在 discord 上的一个机器人上工作,用户必须注册才能使用其中的一些命令。提前致谢!
getPlayerid = function(client, message, callback){
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function() {
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id, function(err, allRows){
if(err != null){
//console.log(err);
callback(0);
}
callback(allRows);
db.close();
});
});
}
z = getPlayerid(client, message, function(data){
})
message.channel.send(`Your Name is ${z}`);
您的代码 ID 中的问题 message.channel.send(
您的名字是 ${z});
在查询 returns 结果之前执行,因此输出 undefined
.
getPlayerid = function(client, message, callback){
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function() {
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id,
function(err, allRows){
if(err != null){
//console.log(err);
callback(0);
}
callback(allRows);
db.close();
});
});
}
/* moved the statement in the callback function */
z = getPlayerid(client, message, function(data){
message.channel.send(`Your Name is ${data}`);
});
你的函数是异步的,所以你的变量不能在你的函数外使用。
我认为你必须这样做:
var getPlayerid = function(client, message, callback) {
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function() {
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id, function(err, allRows){
if(err) {
//console.log(err);
callback(err, null);
}
else {
callback(null, allRows);
}
db.close();
});
});
};
getPlayerid(client, message, function(err, data){
if (err) {
console.log(err);
}
else if (data && data.length) {
message.channel.send(`Your Name is ${data[0].Name}`);
}
else {
message.channel.send("Your ID can't be found");
}
});
希望对您有所帮助。
我的代码可以工作,但不是我想要的那样。
不和谐的输出是 Your name is undefined
。
我希望它是 Your name is Boanak
。我需要它是它从 table 获得的值。
我正在 discord 上的一个机器人上工作,用户必须注册才能使用其中的一些命令。提前致谢!
getPlayerid = function(client, message, callback){
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function() {
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id, function(err, allRows){
if(err != null){
//console.log(err);
callback(0);
}
callback(allRows);
db.close();
});
});
}
z = getPlayerid(client, message, function(data){
})
message.channel.send(`Your Name is ${z}`);
您的代码 ID 中的问题 message.channel.send(
您的名字是 ${z});
在查询 returns 结果之前执行,因此输出 undefined
.
getPlayerid = function(client, message, callback){
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function() {
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id,
function(err, allRows){
if(err != null){
//console.log(err);
callback(0);
}
callback(allRows);
db.close();
});
});
}
/* moved the statement in the callback function */
z = getPlayerid(client, message, function(data){
message.channel.send(`Your Name is ${data}`);
});
你的函数是异步的,所以你的变量不能在你的函数外使用。
我认为你必须这样做:
var getPlayerid = function(client, message, callback) {
var member = message.member.user;
var db = new sqlite3.Database('Matches');
db.serialize(function() {
db.all(`SELECT Name FROM Users WHERE Nameid =`+member.id, function(err, allRows){
if(err) {
//console.log(err);
callback(err, null);
}
else {
callback(null, allRows);
}
db.close();
});
});
};
getPlayerid(client, message, function(err, data){
if (err) {
console.log(err);
}
else if (data && data.length) {
message.channel.send(`Your Name is ${data[0].Name}`);
}
else {
message.channel.send("Your ID can't be found");
}
});
希望对您有所帮助。