как сгенерировать новый случайный uuid или md5 для сохранения в postgresql, например:
Но 'knex.raw('uuid_generate_v4()')' не работает, интересно, как мне сделать, чтобы генерировался случайный хэш и автоматически сохранялся при создании новой записи?
а также кажется, что uuid-v4 не может генерировать рандом из-за миграции, которая статична и неизменна для каждого запроса.
Извините, я изучаю узел из-за собственного, и моя единственная помощь - это Google и github, я благодарю вас за вашу помощь.
В чем причина, почему
Но 'knex.raw('uuid_generate_v4()')'
Не работает? Это работает с postgrsql, когда вы пытаетесь использовать его с простым sql без knex?
Попробуйте также запустить свой код с установленной переменной среды DEBUG= knex:* , чтобы получить больше информации о том, что происходит с вашими запросами.
@anzileiro , вы не должны использовать пакет uuis-v4
в миграциях, но в своих моделях, например, перед сохранением новой модели установите для ее свойства hash
значение uuid()
и затем сохраните его
Вам нужно убедиться, что расширение доступно:
knex.raw('create extension if not exists "uuid-ossp"')
тогда вы можете сделать
table.string('hash').defaultTo(knex.raw('uuid_generate_v4()'))
не забудьте миграцию down
:
knex.raw('drop extension if exists "uuid-ossp"')
Изменить: вы можете использовать тип uuid вместо строки при использовании pg, например:
await knex.schema.createTable('Users', t => {
t.uuid('id').defaultTo(knex.raw('uuid_generate_v4()'))
// ...
})
Спасибо @fl0w , дело закрыто ☺️
Спасибо, парни!
👍
Самый полезный комментарий
Вам нужно убедиться, что расширение доступно:
тогда вы можете сделать
не забудьте миграцию
down
:Изменить: вы можете использовать тип uuid вместо строки при использовании pg, например: