我想刷新redis缓存数据库并返回状态的响应。但在清除缓存之前,它会返回响应。异步等待node.js不工作在节点v8.1.0
在下面的代码中,console.log将始终打印未定义,因为flushRedisDB未被等待。
我的节点版本是V8.1.0
myfile.js
async function flushRedisapi(request, response)
{
try {
var value = await redisModules.flushRedisDB();
console.log("the value is : " + value);
if(value)
response.status(200).send({status : 'Redis Cache Cleared'});
else
response.status(400).send({status : "Redis Cache could not be flushed"});
} catch (error) {
response.status(400).send({status : "Redis Cache could not be flushed"});
}
}
redismodule.js
var redisClient; // Global (Avoids Duplicate Connections)
module.exports =
{
openRedisConnection : function()
{
if (redisClient == null)
{
redisClient = require("redis").createClient(6379, 'localhost');
redisClient.selected_db = 1;
}
},
isRedisConnectionOpened : function()
{
if (redisClient && redisClient.connected == true)
{
return true;
}
else
{
if(redisClient)
redisClient.end(); // End and open once more
module.exports.openRedisConnection();
return true;
}
},
flushRedisDB: async function()
{
if(!module.exports.isRedisConnectionOpened())
return false;
await redisClient.flushall(function (err, result)
{
return (result == 'OK') ? true : false;
});
}
};
请帮我解决这个问题。
不能使用'与节点样式的回调await'。它只适用于承诺。 –
你能帮我转换flushRedisDB函数来使用承诺的概念,使其工作。 – Sharath
@YuryTarabanko等待redisClient.flushall应该等待吗? – Sharath