2014-03-25 42 views
3

我正在使用Express,Postgresql和Redis在Node中構建一個API,並且當談到節點時,我是一個完整的初學者。我試圖設置redis緩存來自postgres的查詢響應,但我無法弄清楚如何在不重複每個文件中的實現的情況下執行此操作。如何使用redis緩存節點中的查詢數據

Here's我的一些app.js的

// connect to the postgresql database 
var database = require("./config/database")(app); 
var pg = require("pg"); 
var conString = app.get('db uri'); 
var client = new pg.Client(conString); client.connect(); 

// an example of how my routes look like 
app.get('/v1/users/:uid', users.getUser(client)); 

Here's users.js

exports.getUser = function(client) { 
    return function(req, res) { 
    var userId = req.params.uid; 

    var query = client.query("SELECT * FROM users WHERE users.id = ?",[userId]); 

    query.on("row", function (row, result) { 
     result.addRow(row); 
    }); 

    query.on("end", function (result) { 
     res.json(result.rows); 
    }); 

    }; 
}; 

伊夫搜索所有網站上,包括計算器和最接近的解決方案從來就可以發現此頁面上找到using redis for cahing in node 他的解決辦法是這樣的:

var handler = function(response) 
{ 
    response = JSON.stringify(response); 
    client.setex('some-key-value', 21600, response);  
    res.end(response); 
}; 

client.get('some-key-value', function (err, result) { 
    if (err || !result) 
     execute_function(zipcode, handler); 
    else 
     res.end(result); 
}); 

我的工作方式是將所有內容都包裝在client.get if/else語句中,但它看起來很醜陋,而且由於我有很多路由,最終我會重複很多代碼,以及如何獲得此解決方案的任何幫助與我的代碼將非常感激。提前致謝!

+0

我們即將做同樣的事情,期待MySQL,Hapi和Redis。你有沒有設法找到任何文檔或例子? –

+0

@AdrianLynch沒有抱歉,我從來沒有找到工作,也找不到任何可以幫助我的例子。 – Patteh

回答

-3

Javascript開發中的一個命令問題是Spaghetti回調。

您可以使用https://github.com/kriskowal/q,承諾避免這樣的錯誤,並使您能夠建立一個更清潔的代碼,或者您也可以使用https://github.com/caolan/async來處理您的回調。

在Node.js項目上工作的最大優勢之一就是它背後的社區。所以,你可以搜索合適的npm包來幫助你建立你的項目。