0

response.render 内で別の高速ルートを呼び出すにはどうすればよいですか。以下は私のコードスニペットです。/pages/performance が要求されたときに performance.jade をレンダリングし、/api/notifications から返されたデータを jade に入力したいと考えています。

module.exports = function(app){
    app.get('/pages/performance', function(req, res){
        res.render("performance", {results: app.get("/api/notifications", function (request, response) {return response.body;}), title: "Performance"});
    });
};

/api/notifications は、次のように jade で使用される json データを返します。

block pageContent
    for result in results
         p #{result.message}
4

1 に答える 1

0

通知を取得してコールバックに渡す関数を作成します。次に、両方のルートでその関数を使用します。これは、純粋な関数または接続ミドルウェアとしてコーディングできます。

ピュアファンクション

function loadNotifications(callback) {
    database.getNotificiations(callback)
}

app.get('/api/notifications', function (req, res) {
    loadNotifications(function (error, results) {
        if (error) { return res.status(500).send(error);
        res.send(results);
    }
});

app.get('/pages/performance', function (req, res) {
    loadNotifications(function (error, results) {
        if (error) { return res.status(500).send(error);
        res.render('performance', {results: results});
    });
});

ミドルウェア

function loadNotifications(req, res, next) {
    database.getNotificiations(function (error, results) {
        if (error) { return next(error);}
        req.results = results;
        next();
    });
}

app.get('/api/notifications', loadNotifications, function (req, res) {
    res.send(req.results);
});

app.get('/pages/performance', loadNotifications, function (req, res) {
    res.render('performance', {results: req.results});
});
于 2013-06-12T11:42:20.533 に答える