sql >> Databáze >  >> RDS >> Mysql

Jak aplikovat funkci na hodnotu klauzule where pomocí Knex?

Pravděpodobně budete muset použít whereRaw()

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

Mimochodem, funkci PASSWORD() MySQL byste neměli používat pro ověřování své vlastní aplikace. Tato funkce byla odstraněna v MySQL 8.0.11. V MySQL 5.7 je to zastaralé a je tam poznámka:

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

Kromě toho není dobrý nápad předávat vašemu dotazu heslo ve formátu prostého textu, protože může být v protokolu dotazu přihlášen jako prostý text.

Místo toho vám doporučuji hledat pouze login ve vašem dotazu, pak bude výsledek zahrnovat hashované heslo uložené ve vaší databázi. Heslo můžete zahašovat v kódu aplikace a porovnat ho s hodnotou hash vrácenou vaším dotazem.




  1. Pokročilé párování oddílů pro spojení po oddílech

  2. Jaký je účel projekční mapy pro Android u poskytovatele obsahu?

  3. MySQL ::Spusťte příkaz SQL v rámci proměnné

  4. Rozdělit řetězec oddělený čárkou a vložit do tabulky (int)