Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment appliquer une fonction sur une valeur d'une clause where en utilisant Knex ?

Vous devez probablement utiliser whereRaw()

knex('usr_info')
  .whereRaw('login = ? AND password = PASSWORD(?)', [login, password]);

Soit dit en passant, vous ne devriez pas utiliser la fonction PASSWORD() de MySQL pour votre propre authentification d'application. Cette fonction a été supprimée dans MySQL 8.0.11. Dans MySQL 5.7, c'est obsolète, et il y a une note :

https://dev.mysql.com/doc /refman/5.7/en/encryption-functions.html#function_password

De plus, ce n'est pas une bonne idée de transmettre le mot de passe en clair à votre requête, car il peut être enregistré en clair dans le journal des requêtes.

Au lieu de cela, je vous recommande de rechercher uniquement login dans votre requête, le résultat inclura le mot de passe haché stocké dans votre base de données. Vous pouvez hacher le mot de passe dans le code de votre application et le comparer au hachage renvoyé par votre requête.