Node.js 在nodejs自定义模块中获取res对象
我正在生成一个助手自定义模块,该模块应返回res.status(422.json)(objError)。但是我如何得到res对象呢? 我尝试在该模块中使用Include express library,但没有任何变化 节点自定义模块Node.js 在nodejs自定义模块中获取res对象,node.js,Node.js,我正在生成一个助手自定义模块,该模块应返回res.status(422.json)(objError)。但是我如何得到res对象呢? 我尝试在该模块中使用Include express library,但没有任何变化 节点自定义模块 function Validation(result){ if(result.error){ //422 Validation Error var objError = []; Object.keys(
function Validation(result){
if(result.error){
//422 Validation Error
var objError = [];
Object.keys(result.error.details).forEach(function(key) {
objError.push(result.error.details[key]['message']);
});
return res.status(422).json(objError);
}
}
module.exports.JV = Validation
您需要将响应对象传递到函数中
function validateAndResponse(result, res){
if(result.error){
//422 Validation Error
var objError = [];
Object.keys(result.error.details).forEach(function(key) {
objError.push(result.error.details[key]['message']);
});
return res.status(422).json(objError);
}
}
然后调用as:validateAndResponse(result,res)
理想情况下,您不应该在函数中这样做,以保持函数的单一责任。您可以在方法中将res作为参数发送
function validateAndResponse(result, res){
if(result.error){
//422 Validation Error
var objError = [];
Object.keys(result.error.details).forEach(function(key) {
objError.push(result.error.details[key]['message']);
});
return res.status(422).json(objError);
}
}
function Validation(result, res){
if(result.error){
//422 Validation Error
var objError = [];
Object.keys(result.error.details).forEach(function(key) {
objError.push(result.error.details[key]['message']);
});
return res.status(422).json(objError);
}
}
这应该可以工作
res
不是您将直接在函数中获得的全局对象。您将在express.get()
或其他相关的express函数的回调函数中获取req
和res
对象作为参数。请参阅“为什么不应”中的示例?我正在重构代码,请给我一个合理的理由,这样我就不会这样做。如果你在不同的模块中使用res
,那么你的路线的作用就不再那么明显了。我们需要看看您的助手模块。如果您将它实现为一个中间件功能,那就好了。