Knex: Сгенерированные UUID и MD5

Созданный на 12 июн. 2016  ·  5Комментарии  ·  Источник: knex/knex

как сгенерировать новый случайный uuid или md5 для сохранения в postgresql, например:

screen shot 2016-06-12 at 5 10 36 pm

Но 'knex.raw('uuid_generate_v4()')' не работает, интересно, как мне сделать, чтобы генерировался случайный хэш и автоматически сохранялся при создании новой записи?

а также кажется, что uuid-v4 не может генерировать рандом из-за миграции, которая статична и неизменна для каждого запроса.

screen shot 2016-06-12 at 5 23 16 pm

Извините, я изучаю узел из-за собственного, и моя единственная помощь - это Google и github, я благодарю вас за вашу помощь.

Самый полезный комментарий

Вам нужно убедиться, что расширение доступно:

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()'))
  // ...
})

Все 5 Комментарий

В чем причина, почему

Но '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 , дело закрыто ☺️

Спасибо, парни!

👍

Была ли эта страница полезной?
0 / 5 - 0 рейтинги