【发布时间】:2014-05-03 03:29:46
【问题描述】:
我正在使用 Express、Postgresql 和 Redis 在 Node 中构建 API,并且在 Node 方面我是一个完整的初学者。我正在尝试设置 redis 以缓存来自 postgres 的查询响应,但如果不在每个文件中重复实现,我就无法弄清楚如何做到这一点。
这是我的一些 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));
这里是 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);
});
};
};
我搜索了整个网络,包括 stackoverflow,我找到的最接近的解决方案可以在此页面上找到 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 语句中来让它工作,但它看起来很丑,因为我有很多路线,我最终会重复很多代码,任何帮助我如何得到这个非常感谢使用我的代码的解决方案。提前致谢!
【问题讨论】:
-
我们即将做同样的事情,期待 MySQL、Hapi 和 Redis。您是否设法找到任何文档或示例?
-
@AdrianLynch 不抱歉,我从来没有让它工作,也找不到任何可以帮助我的例子。
标签: node.js postgresql caching express redis