2016-04-25 9 views
0

Restifyでデフォルトの次の設定をやり直したい。例えば。今私はnext(非エラー結果を得るためには)を実装するための最良の方法は何Restify: "override" default次へ

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

ようなものである場合、私はそれだけで

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(); 
}); 

になりたい

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(); 
}); 

のようなコードを持っていますこの?

+0

あなたのコードでは、すべての変数宣言に 'var'キーワードがありません。 'var'がなければすべてがグローバルになるので、これは悪いことです。あなたのコードを再確認して、 'var'を使わないすべての変数宣言は起こるのを待っているバグです。 [jshint](http://jshint.com/)のようなツールは、これらの間違いを見つけるのを助けます。 – Tomalak

+0

それ以外はあなたの質問は不明です。コードがどのように見えているかを説明したり、達成したいことを説明したりしないでください。 – Tomalak

+0

それは単なるスケッチです。アイデアはres.send + nextの代わりにresultオブジェクトを最後のnextに送ることです。 – Ximik

答えて

0

私はあなたがチェーン内の他のすべてのハンドラが実行された後に実行されるハンドラを探しているかもしれないと思います。 "after"イベントハンドラを考えてみましょう。ドキュメントには、an example for audit loggingと表示されています。

同じことを使用して、必要に応じて応答本文を更新することができます。コードは次のようなものに見えるかもしれません...

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

覚えておいて、これはまだチェーン内の他のハンドラの全てからreturn next();する必要があります。

+0

ニースオプション。ありがとう! – Ximik