最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何将方法与路线分开

运维笔记admin16浏览0评论

如何将方法与路线分开

如何将方法与路线分开

我有这条路线,而且效果很好

router.get('/api/User/:id',async(req,res)=>{
  try {
    const{id}=req.params;
    let result =await pool1.request()
      .input('Iduser', sql.Int, id)
      .execute('GetUser')
      res.json(result);
  } 
    catch (err) {
      res.json({ error: 'Does Not exist' })
    }
});

但是我想分离函数并使路由保持尽可能干净,尝试按如下方法分离它,但出现以下错误:TypeError:一个不是函数

路线

router.get('/api/User/:id', async(req,res)=>{
    try {
        res.json((await one(req.params.id))[0]);
    } catch (err) {
        console.log(err);
        res.sendStatus(500);
    }
})

功能

const one = async(id)=>{
    return new Promise((resolve,reject)=>{
    pool.request()
      .input('Iduser', sql.Int, id)
      .execute('User')((err,results) =>{
          if(err){
              return reject(err);
          }
          resolve(results);
      });

    });
}

我的错是什么,我称这个函数错了吗?

回答如下:

为了使代码更整洁,您可以执行此操作:

const getUserById =async(req,res)=>{
      try {
        const{id}=req.params;
        let result =await pool1.request()
          .input('Iduser', sql.Int, id)
          .execute('GetUser')
          res.json(result);
      } 
        catch (err) {
          res.json({ error: 'Does Not exist' })
        }
    }
    router.get('/api/User/:id',getUserById);

也可以使其更清洁,您可以这样操作:>

export const asyncHandler = (fn) => async (request, response, next) => {
  try {
    return await fn(request, response, next);
  } catch (error) {
    return next(error); // or response.json({ error: 'Does Not exist' })

  }
};

 const getUserById =async(req,res)=>{
            const { params: { id } }=req;
            const result =await pool1.request()
              .input('Iduser', sql.Int, id).execute('GetUser');
            return  res.json(result);
        }


        router.get('/api/User/:id',asyncHandler(getUserById));

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论