为了账号安全,请及时绑定邮箱和手机立即绑定

创建新的 Promise 而不是使用 then() JS

创建新的 Promise 而不是使用 then() JS

白衣染霜花 2023-11-11 16:10:49
我将 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;

        });

     })

  }


查看完整回答
反对 回复 2023-11-11
?
阿晨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 中的函数异步。


查看完整回答
反对 回复 2023-11-11

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号