sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo aplicar una función en un valor de una cláusula where usando Knex?

Probablemente necesite usar whereRaw()

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

Por cierto, no debe usar la función PASSWORD() de MySQL para la autenticación de su propia aplicación. Esta función se eliminó en MySQL 8.0.11. En MySQL 5.7, está en desuso y hay una nota:

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

Además, no es una buena idea pasar la contraseña de texto sin formato a su consulta, ya que puede estar registrada en texto sin formato en el registro de consultas.

En cambio, te recomiendo que busques solo login en su consulta, el resultado incluirá la contraseña codificada almacenada en su base de datos. Puede codificar la contraseña en el código de su aplicación y compararla con el hash devuelto por su consulta.