我想刷新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