Javascript 我如何通过nodejs将值传递给另一个函数?

Javascript 我如何通过nodejs将值传递给另一个函数?,javascript,node.js,sqlite,Javascript,Node.js,Sqlite,所以,我试图用discord js和sqlite3做一件事,但在过去的几个小时里,我一直在讨论这个问题,我仍然不知道如何解决它 client.countDB = function(discordID) { const arr = []; db.each(`SELECT count(DiscordID) FROM verification WHERE DiscordID = ${discordID}`, function(err, row){ if(err){con

所以,我试图用discord js和sqlite3做一件事,但在过去的几个小时里,我一直在讨论这个问题,我仍然不知道如何解决它

  client.countDB = function(discordID) {
    const arr = [];
    db.each(`SELECT count(DiscordID) FROM verification WHERE DiscordID = ${discordID}`, function(err, row){
      if(err){console.log(err); return 0;}
      arr.push(Object.values(row))
      return arr;
    })
    return arr[0];
  };
因此,我试图获取仅在
db中可用的数据。每个
中都有,但我不知道如何传递它,以便返回预期值。我已经尝试过使用全局变量,把它放在一个更大的范围内,但我仍然不知道怎么做

对不起,如果我弄糊涂了,我不习惯一直问问题


编辑:应该说我正在使用该模块

将代码包装在函数中以使其同步


若查询中有数据,最简单的方法就是使用promise

client.countDB = function(discordID) {
 return new Promise((resolve, reject) => {
  db.each(`SELECT count(DiscordID) FROM verification WHERE DiscordID = ${discordID}`, function(err, row){
    //if you want to throw as an error, reject promise with the incoming error as "reject(err)"
    if(err){console.log(err); return resolve(0);}
    arr.push(Object.values(row))
    return resolve(arr[0]);
  })
 })};

// You can use this as 
client.countDB('someId')
 .then(data => console.log(data))
 .catch(err => console.log(err));

您是否获得了arr[0]的
undefined
值?这显然不起作用,因为
return
语句将在
db的回调之前触发。每个
都将执行。我不熟悉sqlite3,但必须有一种方法通过开箱即用的承诺获得db.each的结果。如果不是的话,你必须自己承诺。是的,正是我所想的,使用
async wait
,他们在他们的github中提到它确实是异步的。它可能是异步的,但它在这里或在中没有提到它返回承诺,也没有提到如果没有通过回调,它将返回承诺(这通常是此类库的情况)@shubhamjha很抱歉延迟回复,但是的,我得到了一个未定义的值感谢回复,但在我运行它时它是未定义的。感谢您的帮助,但这不起作用,因为我需要的功能是在client.countDB中
client.countDB = function(discordID) {
 return new Promise((resolve, reject) => {
  db.each(`SELECT count(DiscordID) FROM verification WHERE DiscordID = ${discordID}`, function(err, row){
    //if you want to throw as an error, reject promise with the incoming error as "reject(err)"
    if(err){console.log(err); return resolve(0);}
    arr.push(Object.values(row))
    return resolve(arr[0]);
  })
 })};

// You can use this as 
client.countDB('someId')
 .then(data => console.log(data))
 .catch(err => console.log(err));