我在Node.js中有一个API。我的路线看起来像
exports.getUserList = (req, res, next) => {
User.find().sort({ name: 1 }).then(users => {
res.json({
status: 'success',
users
});
}).catch(next);
};如本例所示,我使用.catch(next)。但这是正确的做法吗?路由不应该总是打印json吗?
所以我在考虑做一些像这样的事情
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服务器?
发布于 2021-06-01 03:21:38
你有没有尝试过async/await函数和自定义响应来获取成功和错误?下面是示例:
responseHandler.js
// 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
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
});
};https://stackoverflow.com/questions/44154302
复制相似问题