2016-04-25 106 views
0

我想在Restify中重写默认的下一个。例如。现在我有这样的代码尊重:“覆盖”默认下一步

server.post('/names', function (req, res, next) { 
    names = req.params.names; 
    if (!Array.isArray(names)) { 
    return next(new restify.errors.BadRequestError('names field is wrong or missing')); 
    } 
    res.send({ code: "OK" }); 
    return next(); 
}); 

我希望它只是

server.post('/names', function (req, res, next) { 
    names = req.params.names; 
    if (!Array.isArray(names)) { 
    return next(new restify.errors.BadRequestError('names field is wrong or missing')); 
    } 
    // Add names to DB 
    return next(); 
}); 

next(非错误结果)就像是

function next(res) { 
    if (!body.hasOwnProperty("code")) { 
    body["code"] = "OK"; 
    } 
    res.send(body); 
} 

什么是最好的方式来实现这个?

+0

您的代码在每个变量声明中缺少'var'关键字。这很糟糕,因为没有'var',所有东西都变成全局的。仔细检查你的代码,没有'var'的每个变量声明都是一个等待发生的错误。像[jshint](http://jshint.com/)这样的工具可以帮助您找到这些错误。 – Tomalak

+0

除此之外,您的问题还不清楚。不要解释你认为代码应该是什么样子,解释你想实现的目标。 – Tomalak

+0

这只是草图。这个想法只是将结果对象发送给最后一个下一个,而不是执行res.send + next。 – Ximik

回答

0

我想你可能正在寻找一个处理程序,在链中的所有其他处理程序完成后执行。考虑“之后”事件处理程序。在文档中他们显示an example for audit logging

您应该可以根据需要使用相同的东西来更新响应主体。该代码可能是这个样子......

server.on('after', function (request, response, route, error) {}); 

请记住,这仍然需要你return next();所有链中的其他处理程序。

+0

不错的选择。谢谢! – Ximik