我对承诺的新挑战卡住了。承诺处理 - 更新数据库条目(如果存在)
目标:仅在存在P_KEY时更新数据库条目。
当前数据库是通过模块公开的,模块已经获取和放置db的方法。双方都回诺言。
方法:
- API调用的更新方法处理节点JS用ID和组值(JSON)
- 在处理程序后方法调用数据库模块检查
get
方法,如果在承诺值如果是,则成功为空或返回false否则为真。 - 如果为true;数据存在调用
put
db模块的方法。
但以某种方式数据它总是返回false。即使db入口已经通过db api进行了。
/** Function to check if p_key exist*/
function checkIfPKExists(idVal){
pkdb.get(idVal).then(function(value){
if(value){
return true;
} else {
return false;
}
},
function(err){
console.log(err);
return false;
})
}
/** UPDATE METHOD **/
var ch = checkIfPKExists("p_k"+req.body.id);
if(!ch){
res.send("pk does not exist oo " + req.body.id);
} else {
var pk_promise = pkdb.put("p_k"+req.body.id, req.body.pk);
pk_promise.then(
function(){
res.send(JSON.stringify(req.body.pk) + "Updated Successfully");
},
function(err){
res.send("Error occurred : " + err);
}
)
}
我的理解是ch
值从checkPK
功能,因为这就是设置一个承诺,它只是向前走并处理if
环在默认情况下代表true
,也不论做元素是否存在还是不一样的结果。未找到。
我能做些什么来纠正它?
谢谢你的回答。这真的帮助我理解更好的承诺。不错的代码流。 –