2017-01-08 6 views
0

RestifyをSQLite3データベースに使用しています。これは1が再びすべての属性に合格する必要があります動作するためにはPut Restage + SQLite3の特定のフィールドのみを更新

server.put('/users/:userid', function(req, res, next) { 
    bcrypt.hash(req.body.password, 10, function(err, hash) { 
    if (err) { 
     res.send(err); 
    } else { 
     db.run('UPDATE users SET username = ?, first_name = ?, last_name = ?, email = ?, password = ? WHERE id = ?', req.body.username, req.body.first_name, req.body.last_name, req.body.email, hash, req.params.userid, function(err) { 
     if (err) { 
      res.send(err); 
     } else { 
      res.json({ message:'Successfully updated user'}); 
     } 
     }); 
    } 
    }); 
    next(); 
}); 

:今のところ、これは私が私のput方法のために持っているものである

{ 
    "username": "greg", 
    "first_name": "Greg", 
    "last_name": "Davis", 
    "email": "[email protected]", 
    "password": "password" 
} 

のみ、電子メールならば明らかにこれは冗長です変更する必要があります。次のコードを渡すだけで充分であるように、コードを変更するにはどうすればよいですか?

{ 
    "email": "[email protected]", 
} 

私は大丈夫新しいパスワードが指定された場合には、より複雑なように、チェックするためにいくつかの追加のロジックに追加することが、すべて単一のフィールドのロジックに追加していが、過剰なようです。

答えて

1

生DBクエリを使用する代わりに、Sequelizeのようなものを使用して調べることができます。これはsqlite3と互換性があります。その後、ユーザーオブジェクトを取得し、必要な変更のみを行い、そのオブジェクトに対してupdateを実行することができます。

それ以外の場合は、可能なフィールドごとにifステートメントが作成されているようです。

関連する問題