我将 Nexus 用于数据库目的,但我有一个通常也适用于 JS/TS 的问题。knex('cars').insert(cars).then(() => console.log("data inserted")) .catch((err) => { console.log(err); throw err }) .finally(() => { knex.destroy(); });如何将上述内容创建为新的 Promise 并拒绝或解决,如下所示byID(id: string): Promise<TEntity> { return new Promise((resolve, reject) => { const result = pg(cars) .where({ 'id': id }) // .andWhere('age', '<', 18); .first(); if (!result) return reject(new ModelNotFoundError('LMAO user not found')); resolve(result) }) }
2 回答
ABOUTYOU
TA贡献1812条经验 获得超5个赞
无需将 knex 查询包装到 Promise 构造函数。您可能正在尝试写这样的东西:
byID(id: string): Promise<TEntity> {
return pg(cars).where({ 'id': id }).first()
.then(result => {
if (!result) {
throw new ModelNotFoundError('LMAO user not found'));
}
return result;
});
})
}
阿晨1998
TA贡献2037条经验 获得超6个赞
不确定这是否是您所要求的,但您可以利用异步/等待。
const result = await new Promise(async (resolve, reject) => {
try {
await knex('cars').insert(cars);
console.log("data inserted");
} catch (err) {
console.log(err);
reject(err);
} finally {
knex.destroy();
}
resolve();
})
你不需要“等待”这个承诺,你也可以在那时“等待”它。我想要表达的要点是,您可以使 Promise 中的函数异步。
添加回答
举报
0/150
提交
取消