Обновить значение из базы данных с хэшированным содержимым из другого столбца - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать миграцию nodejs, чтобы добавить новый столбец в мою таблицу и обновить все старые записи хешированным содержимым из другого столбца в той же строке. Кстати, я использую Knex.

Я пытался использовать bcrypt, чтобы получить sh контент, но у меня возникли некоторые трудности при доступе к контенту из строки. Сейчас у меня есть следующее:

return knex.raw(
`UPDATE ${schema}.${tableName} tm
 SET hashed_transfer_information = ${await bcrypt.hash(tm.transfer_method_information), 10}`
);

Проблема в том, что таким образом я не могу получить доступ к содержимому из строки?

Можете ли вы, ребята, помочь?

Ответы [ 3 ]

2 голосов
/ 07 января 2020

Вы можете сделать это за postgres, но я не знаю, совместим ли используемый там алгоритм blowfi sh с вашей реализацией bcrypt на стороне клиента.

`UPDATE ${schema}.${tableName} 
 SET hashed_transfer_information 
      = crypt(transfer_method_information,gen_salt('bf', 10))`

Возможно, вам потребуется сначала включите расширение pgcrypto, выполнив (SQL):

CREATE EXTENSION pgcrypto;
1 голос
/ 08 января 2020

Чтобы завершить ответ зажима с синтаксисом knex:

knex('tableName').withSchema('schema')
  .update(
    'hashed_transfer_information', 
    knex.raw(`crypt(transfer_method_information, gen_salt('bf', 10))`)
  )
0 голосов
/ 08 января 2020

Спасибо Зажим и Микаэль , это было интересно. Я никогда не удосужился иметь sh пароль в базе данных прежде! это работает просто отлично:

Password is 'wombats' ... true
Password is 'notwombats' ... false
Password is 'wombats' ... true
Password is 'notwombats' ... false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...