从 sqlite 数据库请求承诺,等待不返回任何东西,异步函数不会记录任何东西

Requesting promise from sqlite database, await is not returning anything and async function won't log anything

我需要从 sqlite 数据库接收一个 promise,但由于某种原因,await 没有在 async 函数内部做任何事情,我该怎么办或如何获取我需要的数据?

//SQLITE DB user check
function checkDBUser(userid) {
  return new Promise(() => {
  let author = userid
  let sql = `SELECT Author author
  FROM cooldowns
  WHERE author  = ?`;

  db.get(sql, [author], (err, row) => {

    if (err) {
      return console.error(err.message);
    }
    return row
    ? row.author && console.log('User found! ' + row.author)
    : console.log('User not found!')
  }
  );
}); };

//Command for user check 
if(command === 'check') {
  async function checking() {
  const user = await checkDBUser(message.author.id);
  console.log('USER: ', user);
  console.log('random log') // even this .log is not returned by async function
  if (user == message.author.id) {
    console.log('User exists!')
    return;
  }
} checking();

没有等待,checkDBUser(message.author.id); returns User: Promise { <pending> },但是对于 await,实际上什么都没有记录,就像字面意义上的什么都不做。不知道问题出在哪里

您将 db.get() 包装在 new Promise() 中,但从未对该承诺调用 resolve 或 reject,因此该承诺永远不会做任何事情(永远不会解决或拒绝)。承诺不是魔法。如果您使用 new Promise() 创建一个,则必须使用传递给执行程序函数的解析和拒绝处理程序,并在异步操作完成时调用它们。

这是它的样子:

//SQLITE DB user check
function checkDBUser(userid) {
    return new Promise((resolve, reject) => {
        let sql = `SELECT Author author FROM cooldowns WHERE author  = ?`;

        db.get(sql, [userid], (err, row) => {
            if (err) {
                console.error(err.message);
                reject(err);
            } else {
                console.log(row);
                // resolve with row.author or null
                resolve(row ? row.author : null);
            }
        });
    });
}