2014-03-25 11 views
3

Express, Postgresql 및 Redis가있는 노드에 API를 작성하고 있으며 노드라면 완전한 초보자입니다. Postgres에서 쿼리 응답을 캐싱하기 위해 redis를 설정하려고했지만 모든 파일에서 구현을 반복하지 않고 수행하는 방법을 파악할 수 없습니다.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); 
    }); 

    }; 
}; 

필자는 유래를 포함하여 웹 및 I've이 할 수있는 가장 가까운 솔루션을 통해 모든 검색 이 페이지에서 볼 수 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

자바 스크립트 개발의 명령 문제 중 하나는 스파게티 콜백입니다.

https://github.com/kriskowal/q을 사용하면 실수를 피하고 더 깨끗한 코드를 만들거나 https://github.com/caolan/async을 사용하여 콜백을 처리 할 수 ​​있습니다.

Node.js 프로젝트에서 작업 할 때 가장 큰 장점 중 하나는 그 뒤에있는 커뮤니티입니다. 따라서 프로젝트를 구축하는 데 도움이되는 적절한 npm 패키지를 검색 할 수 있습니다.

관련 문제