0
我希望在node.js中創建hget的同步命令。Node.js&Redis/hget同步
我寫了下面:
var db = require("redis");
var dbclient = db.createClient();
var res1 = dbclient.hget("all_records", "/" + full_path)
if (res1 != undefined){
objStatus.status = "TRUE"
} else {
objStatus.status = "FALSE"
}
的問題是,在res1
,我總是得到true
,而我設置編號,這個領域:
dbclient.hset("all_records", key, size); // size is number
它還如果該鍵返回true不存在。
如何執行此命令?
編輯(這裏是完整的代碼,爲什麼我用電話同步):
for (var attr in paths) {
var full_path = "/0" + attr
var objStatus = new Object();
var res1 = dbclient.hget("all_records", "/" + full_path)
if (res1 != undefined){
objStatus.status = "TRUE"
} else {
objStatus.status = "FALSE"
}
}
arrayResult.push(objStatus);
}
return arrayResult;
但這是異步調用。在完整的代碼中,我遍歷所有記錄,然後將結果返回給客戶端。如果我使用你的建議,那麼我會返回一個空數組 - 因爲它不會等待所有的hget完成。 – MiddleWare
我編輯問題。用你的建議,'arrayResult'將返回空。 – MiddleWare
@MiddleWare這不是我的建議,這是Redis API的工作方式。您很可能必須使用回調使您的函數異步,或承諾能夠以直接方式將填充數組傳遞給調用代碼。 –