由于某些原因,我使用以下代码在实际数据之前未定义
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)
控制台日志输出未定义的对象和之后的对象,这是什么原因?
答案 0 :(得分:1)
可能您还需要在这里await
:
const info: T = await stmt.get(parameters);
从文档here看来,.get
是一个经典的回调函数,因此您可能需要在将其与await结合使用之前将其包装在Promise中。
this.db.prepare(query)
可能也是如此吗?如果您不想兑现承诺,请从标准节点库中检出util.promisify
。
此外,您不能在开放代码中调用异步函数。试试这个:
(async () => {
const user = await respository.findOne('SELECT * FROM users WHERE id = ?', targetUser.id)
})();
希望这会有所帮助!