由于某种原因,我在使用以下代码的实际数据之前未定义
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/