私は約束に新たな挑戦が残っています。プロミス処理 - dbエントリが存在する場合に更新する
目的:P_KEYが存在する場合のみ、DBエントリを更新します。
現在のdbはモジュールを通して公開され、モジュールはdbのgetおよびputメソッドを持っています。どちらも約束を返す。
アプローチ:
- ノードJSでupdateメソッドハンドラのAPIコールIDと値のセット(JSON)
- とハンドラ内でDBモジュールチェックの
get
方法にPOSTメソッド呼び出しの値の場合の約束に成功した場合は空です。そうでない場合はfalseを返します。 - trueの場合、データはdbモジュールの
put
メソッドへの呼び出しが存在します。
しかし、何らかの形でデータは常に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
機能から、それはちょうど先に行くと、デフォルトでtrue
を意味し、要素があるかどうか、同じ結果であるかどうかに関係なく行わif
ループを処理約束のthatsので、設定されています。見つかりません。
修正するにはどうすればよいですか?
あなたの答えをありがとう。それは本当に私がより良い約束を理解するのを助けました。ニースのコードフローも。 –