首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Node.js中优化接口请求

在Node.js中优化接口请求
EN

Stack Overflow用户
提问于 2017-05-24 17:25:26
回答 1查看 146关注 0票数 5

我在Node.js中有一个API。我的路线看起来像

代码语言:javascript
复制
exports.getUserList = (req, res, next) => {
  User.find().sort({ name: 1 }).then(users => {
    res.json({
      status: 'success',
      users
    });
  }).catch(next);
};

如本例所示,我使用.catch(next)。但这是正确的做法吗?路由不应该总是打印json吗?

所以我在考虑做一些像这样的事情

代码语言:javascript
复制
exports.getUserList = (req, res, next) => {
  User.find().sort({ name: 1 }).then(users => {
    res.json({
      status: 'success',
      users
    });
  }).catch(err => {
    res.json({
      status: 'error',
      msg: err
    });
  });
};

但是它不是应该像res.status(some_status_code).json({})一样吗?

在错误处理方面,一个简单的API通常是如何实现的?

如果我在代码中使用了一个未定义的变量(即导致语法错误),该怎么办?我应该用JSON错误来处理它,还是应该确保我不做草率的编码?:-D

另外,这是打印json的最快方法吗?我的意思是,我应该使用User.find().lean()吗?我应该做一些缓存吗?将我的API存储在一个普通的网站上是不是很聪明,或者有没有针对这种情况优化的API服务器?

EN

回答 1

Stack Overflow用户

发布于 2021-06-01 03:21:38

你有没有尝试过async/await函数和自定义响应来获取成功和错误?下面是示例:

responseHandler.js

代码语言:javascript
复制
// use this for success
function successResponse(message, data) {
  const success = {
    success: true,
    message: message,
    data: data
  }
  return success
}

// use this as middleware error handler
function errorResponse(err,req,res,next) => {
  return res.status(err.status || 500).json({
    success: false,
    message: err.message
  })
}

module.exports = {
  successResponse,
  errorResponse
}

myRouter.js

代码语言:javascript
复制
const { successResponse } = require('./responseHandler')

exports.getUserList = async (req, res, next) => {
  await User.find().sort({ name: 1 }).then(users => {
    res.status(200).json(
      successResponse(`data user`, users)
    )
  }).catch(err => {
    return err
  });
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44154302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档