sql >> Databasteknik >  >> RDS >> Mysql

Hur applicerar man en funktion på ett värde av en where-sats med Knex?

Du måste förmodligen använda whereRaw()

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

Du bör förresten inte använda MySQL:s PASSWORD()-funktion för din egen appautentisering. Denna funktion togs bort i MySQL 8.0.11. I MySQL 5.7 är den utfasad, och det finns en anteckning:

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

Dessutom är det inte en bra idé att skicka klartextlösenordet till din fråga, eftersom det kan vara inloggat i klartext i frågeloggen.

Istället rekommenderar jag att du bara söker efter login i din fråga kommer resultatet att inkludera det hashade lösenordet som är lagrat i din databas. Du kan hasha lösenordet i din appkod och jämföra det med hashen som returneras av din fråga.




  1. SQL Server 2008 Express CONCAT() existerar inte?

  2. MySQL ConnectorJ med flera SQL-satser

  3. Flera stigande ordning fungerar inte i Mysql

  4. uppdatera rad automatiskt efter en viss tid