koa异常处理

 

全局处理异常:

https://blog.csdn.net/weixin_44867717/article/details/131949819

 

更简洁的写法

router.post('/:tick', async(ctx, next) => { // 特定tick
  const params = ctx.request.params;
  const ids = params.tick

  try {
    let sql = `
      SELECT src20_tick_v4.*, src20_mint_progress_v4.*
      FROM ${SRC20_TICK_TABLE} s, ${SRC20_MINT_PROGRESS_TABLE}
      WHERE s.id=src20_mint_progress_v4.id and src20_tick_v4.id='${ids}'
    `
    let res = await knex.raw(sql)
    const resMap = []
    for (let each of res.rows) {
      resMap.push({
        tick: each.tick,
        stamp_url: each.stamp_url,
        max: each.max ? each.max : "",
        lim: each.lim ? each.lim : "",
        amt: new Decimal(each.amt),
        dec: each.dec ? each.dec : 18,
        creator: each.creator,
        tx_hash: each.tx_hash,
        block_index: each.block_index,
        block_time: each.block_time,
      })
    }
    ctx.body = success(resMap.length ? resMap[0] : {})
  } catch (e) {
    // console.log('---------', e.status, e.statusCode, e.message);
    ctx.body = fail(e.message);
  }

  
  
})

不需要asCallback了。

 

 

在函数内部处理:

router.post('/:tick', async(ctx, next) => { // 特定tick
  const params = ctx.request.params;
  const ids = params.tick

  let sql = `
    SELECT src20_tick_v4.*, src20_mint_progress_v4.*
    FROM ${SRC20_TICK_TABLE} s, ${SRC20_MINT_PROGRESS_TABLE}
    WHERE s.id=src20_mint_progress_v4.id and src20_tick_v4.id='${ids}'
  `
  let res = []
  try {
    res = await knex.raw(sql).asCallback(function(err) {
      if (err) {
        // console.log(false, err, err.message);
        // ctx.body = fail(err.message);
        // throw err;
        // console.log(false, err);
      } else {
        // console.log(true);
        const resMap = []
        for (let each of res.rows) {
          resMap.push({
            tick: each.tick,
            stamp_url: each.stamp_url,
            max: each.max ? each.max : "",
            lim: each.lim ? each.lim : "",
            amt: new Decimal(each.amt),
            dec: each.dec ? each.dec : 18,
            creator: each.creator,
            tx_hash: each.tx_hash,
            block_index: each.block_index,
            block_time: each.block_time,
          })
        }
        ctx.body = success(resMap.length ? resMap[0] : {})
      }
    })
  } catch (e) {
    // console.log('---------', e.status, e.statusCode, e.message);
    ctx.body = fail(e.message);
  }

  
  
})

sql有问题,被try catch捕获。而不asCallback中的err,但asCallback中的err里包含相同信息。

 

posted @ 2023-12-25 20:14  走走停停走走  Views(8)  Comments(0Edit  收藏  举报