2017-02-21 7 views
1

これはケースです - 私は、MySQLデータベースを使用してnode.js + Expressアプリケーションを持っています。私はテーブル(Employeeの例)からデータを読みます。私は必要なデータをHTML形式で表示します。従業員の名前、メールアドレス、電話番号、住所などNode.js Express POSTのみルータへの入力を変更しました

フォームでは、ユーザーはすべてのフィールドまたは選択したフィールドを更新し、送信を押してレコードを更新できます。アップデートで

私は私のルータを呼び出し、ボディパーサーを使用してフォーム入力をお読みください。

<form role="form" action="/employee/update" method="post"> 
    Name : <input type="text" name="ename"/> 
    Email : <input type="email" name="empEmail"/> 
    . 
    . 
    . 
</form> 

今、ユーザーはすべての入力を変更したり、一つだけことができます。しかし、私はSQLの更新を行うときにのみ変更されたフィールドを更新したいです。

私の現在のソリューション

私が今やっていることは、私は、ユーザーによって変更された任意の入力の名前を格納し、フォームの隠し入力を持っているということです。したがって、私のパブリックjsファイルでは、jqueryコードは入力のonchangeを変更し、変更された入力の "name"プロパティを読み込み、コンマで区切られた文字列を作成し、隠し入力に値として割り当てます。

ユーザーは名前とメールアドレスを変更するのであれば、非表示の入力は次のようになります。ユーザーがクリックを提出したときに、私はちょうど行う私のルータ上で、だから、

<input type="hidden" name="FormHiddenInput" value="ename,empEmail"/> 

var fieldName = req.body.FormHiddenInput; 

その後私はそれを分割し、変更された個々のフィールドの名前を抽出し、req.bodyを再度実行します。

このプロセスはうまくいきますが、私はそれが気に入らないのです。それはあまりにも多くのコードを必要とし、ループのために行く。

私は入力/ textarea/selectなどの名前は、実際にルータで直接フォームで変更されたものですか?

答えて

0

行全体を更新する必要があります。コードの冗長性と複雑さが軽減され、オーバーヘッドはごくわずかです。

mysql UPDATE statement - overhead for same values?

+0

オクラホマので、ちょうど全身を読み、セット – codeinprogress

+0

うんを更新し、それは正しいです。 – 0019

+0

ありがとう、私は行って、私のコードを更新します。 – codeinprogress

関連する問題