我有一个 mdoule,我在其中创建一个数据库连接和一个运行查询的函数。我想在另一个模块中使用这个查询的输出。我该怎么做呢?
该查询应该返回键值对(hello:world)中的值。但是,每次我尝试在另一个模块中使用该变量时,我都会得到“true”而不是“world”。
我的代码在这里 https://github.com/rishavs/RedisDbConnect
我想从 app.js 调用 getValue 函数,也许还有 console.log(db.getValue()) 的输出。
我有一个 mdoule,我在其中创建一个数据库连接和一个运行查询的函数。我想在另一个模块中使用这个查询的输出。我该怎么做呢?
该查询应该返回键值对(hello:world)中的值。但是,每次我尝试在另一个模块中使用该变量时,我都会得到“true”而不是“world”。
我的代码在这里 https://github.com/rishavs/RedisDbConnect
我想从 app.js 调用 getValue 函数,也许还有 console.log(db.getValue()) 的输出。
您不能像从同步一样从异步函数返回值。您需要使用回调方式。像这样修改你的代码:
获取值函数:
var getValue = function(cb) {
dbConnection.get("hello", function (err, reply) {
var val = reply ? reply.toString() : null;
cb(err, val);
});
};
控制器:
app.get('/json', function(req, res, next) {
res.contentType('application/json');
db.getValue(function(err, val) {
if (err) return next(err);
res.send(val);
});
});