2017-03-22 9 views
1

私はクライアントと呼ばれるテーブルを更新したいと思います。次のコードは有効なIDに対して機能しますが、無効なIDに対してはcatch関数を呼び出さずにハングするだけです。knex.js - データを簡単に更新する方法

knex('client').where('id',id).update({ 
     name:req.body.name 
     }).then(function(numberOfUpdatedRows) { 
      if(numberOfUpdatedRows) { 
       res.json(success); 
       return; 
      } 
     }).catch(function(err){ 
      res.status('500'); 
      res.json(err); 
      return;   
     }); 
}); 

私はこのような問題解決:、無効なIDのknexがキャッチ関数を呼び出す代わりにidの空の値をリターンをハングアップ、どのされていないにもこのケースでは

knex('client').where('id',id).select('id').then(function(id){ 
     if(id) { 
      //update 
     }else { 
      //failed 
     } 
    }).catch(function(err){ 
     console.log("select id do not exist"); 
     res.send("do not exist"); 
    }); 

を私はエラーチェックに使用します。
私は初心者です。これを行うにはより良い方法があると確信しています。
もっと良い方法をお勧めしますか?
knex documentationでは、knexがこのようなエラーの原因をどのように処理するかについてはあまり見当たりませんでした。その情報をどこで見つけることができるのか、私は将来自分で解決することができます。ありがとう。

+0

まずデータを検証します。 –

答えて

0
knex 
.select('id') 
.from('client') 
.where('id', id') 
.then(([row]) => { 
    if (!row) { 
    console.log("select id do not exist") 
    return res.send("do not exist") 
    } 
    return knex('client') 
    .update('name', req.body.name) 
    .where('id', row.id) 
}); 

もし私がすでに行が存在しないことが分かっていれば、私はこのコードを論理的なエラーとして扱うでしょう。

関連する問題