gpt4 book ai didi

node.js - 用于捕获错误处理的快速 Controller

转载 作者:搜寻专家 更新时间:2023-10-31 23:57:41 25 4
gpt4 key购买 nike

如何在express的controller中实现DRY?我发现我重复了 catch 函数的代码。

exports.getUsers = (req, res) => {

Ad.find({})
.then(data=>{
res.json({status:1, data})
})
.catch(err => {
res.status(400).send({
msg: err
})
})
}

exports.getUser = (req, res) => {

User.findOneById({id: res.body.id})
.then(data=>{
res.json({status:1, data})
})
.catch(err => {
res.status(400).send({
msg: err
})
})
}

大多数时候我们只想返回相同的错误对象,但在一个 Controller 文件中,我们有很多这样的对象

.catch(err => {
res.status(400).send({
msg: err
})
})

有没有什么地方可以将它作为中间件实现一次?

最佳答案

不是作为中间件,但您可以创建一个函数,sendErrorResponse,它将 reserr 作为参数,例如:

function sendErrorResponse(res, err) {
return res.status(400).send({
msg: err
})
}

然后将其用作:

User.findOneById({id: res.body.id}).then(data=>{
res.json({status:1, data})
})
.catch(err => sendErrorResponse(res, err))

如果需要,您可以将 sendErrorResponse 移动到一个单独的文件中,并在多个 Controller 中要求它。

关于node.js - 用于捕获错误处理的快速 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49210237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com