Mysql
 sql >> Database >  >> RDS >> Mysql

Come applicare una funzione su un valore di una clausola where usando Knex?

Probabilmente devi usare whereRaw()

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

A proposito, non dovresti usare la funzione PASSWORD() di MySQL per l'autenticazione della tua app. Questa funzione è stata rimossa in MySQL 8.0.11. In MySQL 5.7 è deprecato e c'è una nota:

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

Inoltre, non è una buona idea passare la password in chiaro alla tua query, perché potrebbe essere registrata in chiaro nel registro della query.

Ti consiglio invece di cercare solo login nella tua query, il risultato includerà la password con hash memorizzata nel tuo database. Puoi eseguire l'hashing della password nel codice dell'app e confrontarla con l'hash restituito dalla query.