Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在nodejs自定义模块中获取res对象_Node.js - Fatal编程技术网

Node.js 在nodejs自定义模块中获取res对象

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(

我正在生成一个助手自定义模块,该模块应返回res.status(422.json)(objError)。但是我如何得到res对象呢? 我尝试在该模块中使用Include express library,但没有任何变化

节点自定义模块

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
,那么你的路线的作用就不再那么明显了。我们需要看看您的助手模块。如果您将它实现为一个中间件功能,那就好了。