Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como aplicar uma função em um valor de uma cláusula where usando o Knex?


Você provavelmente precisará usar whereRaw()
knex('usr_info')
  .whereRaw('login = ? AND password = PASSWORD(?)', [login, password]);

A propósito, você não deve usar a função PASSWORD() do MySQL para sua própria autenticação de aplicativo. Esta função foi removida no MySQL 8.0.11. No MySQL 5.7, está obsoleto e há uma observação:

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

Além disso, não é uma boa ideia passar a senha de texto simples para sua consulta, porque ela pode estar registrada em texto simples no log de consulta.

Em vez disso, recomendo que você pesquise apenas por login em sua consulta, o resultado incluirá a senha com hash armazenada em seu banco de dados. Você pode fazer o hash da senha no código do seu aplicativo e compará-la com o hash retornado pela sua consulta.