node.js - Promise 返回未定义和之后的数据

标签 node.js typescript sqlite es6-promise

由于某种原因,我在使用以下代码的实际数据之前未定义

async findOne(query: string, parameters: string): Promise<T> {
    const stmt: sqlite3.Statement = await this.db.prepare(query)
    const info: T = stmt.get(parameters)
    this.db.close()

    return info
}

const user = await respository.findOne('SELECT * FROM users WHERE id = ?', targetUser.id)
console.log(user)

控制台日志输出undefined,后面输出一个object,请问是什么原因?

最佳答案

可能您还需要await在这里:

const info: T = await stmt.get(parameters);

来自文档here看来.get是一个经典的回调函数,因此您可能需要将其包装在 Promise 中,然后才能将其与 wait 一起使用。

this.db.prepare(query) 可能也是如此?结账util.promisify如果您不想自己进行 promise 包装,请从标准 Node 库中获取。

此外,您无法在开放代码中调用异步函数。试试这个:

(async () => {
   const user = await respository.findOne('SELECT * FROM users WHERE id = ?', targetUser.id)
})();

希望这有帮助!

关于node.js - Promise 返回未定义和之后的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55220983/

相关文章:

node.js - fuse .js : How to return an exact match when there are two words to search for?

javascript - 如何从父方法创建子类型的新对象

angular - Ionic-3 找不到管道

sqlite - 我可以从多个连接同时读取和写入 SQLite 数据库吗?

java - 登录后引导用户进行某些 Activity

php - CodeIgniter Sqlite 不工作

javascript - 不确定如何将请求转发到另一个路由器?

node.js - 在 Mac 上更新 Node.js : Error while updating Node. js

javascript - 如何在断开连接时获取当前的 socket 空间?

visual-studio - 在 Visual Studio 2017 中隐藏生成的 js 文件