【发布时间】:2018-01-20 16:04:11
【问题描述】:
我在 Promise 上遇到了新的挑战。
目标:仅当 P_KEY 存在时才更新 DB 条目。
当前 db 通过模块公开,模块有 db 的 get 和 put 方法。两者都返回 Promise。
方法:
- API 调用节点 js 上带有 ID 和值集 (json) 的更新方法处理程序
- 在对 db 模块
get方法的 post 方法调用的处理程序中,检查承诺成功的值是否为空,如果是,则返回 false,否则返回 true。 - 如果为真;数据存在对 db 模块的
put方法的调用。
但不知何故,它总是返回错误的数据。即使已经通过 db api 进行了 db 条目。
/** 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 并且无论元素是否存在都完成了相同的结果.未找到。
我能做些什么来纠正它?
【问题讨论】:
标签: javascript node.js rest express