TGViewer
Node.js Recipes Node.js Recipes @node_recipes · 3.1K subscribers
Post #480 2.12K
Як генерувати первинний ключ?

TL;DR; використовуйте nanoid

Сьогодні поговоримо про формат первинного ключа. Почнемо з типового порівняння id VS uuid.

id, інкрементний ключ, тобто 1, 2, 3, ...
➕ простий у роботі
➕ по ньому можна сортувати
➖ Не є String. Нагадаю, що id входить до URL, який є String.
➖ Легко створити колізію. Приклад із практики: до міграції додано admin c id=1000. Це пішло у реліз.
➖ Створюють ризики для системи – її просто аналізувати: скільки сутностей, як швидко вони додаються
➖ сутності не можна переносити між оточеннями (типова проблема самописних CMS)

uuid, приклад 1FE577FE-9AED-4728-8B88-AAA11FA11E76
➕ гарантовано унікальні
➕ можна генерувати будь-де, а не тільки в БД. Нагадаю про crypto.randomUUID() і браузер, і в Node.js.
➖ довгі, тобто потрібно більше місця, щоб зберігати та передавати
➖ Людям із ними не так зручно працювати
➖ Сортування за таким ключем не має сенсу

Хорошою альтернативою uuid є nanoid. Приклад, V1StGXR8_Z5jdHi6B-myT. Ще він дозволяє вибрати довжину та алфавіт. Тому його часто використовують у web додатках.

Посилання по nanoid:
🔗 https://www.npmjs.com/package/nanoid
🔗 https://github.com/Jakeii/nanoid-postgres
🔗 https://zelark.github.io/nano-id-cc/
  • 👍 27
  • 🔥 8
More from @node_recipes
  1. Jan 5, 2026По всьому світу проходять Cursor Meetups, де локальні спільноти діляться досвідом використ…
  2. Jan 5, 2026Думки на вихідних: Full Stack Learning Подивився останнє відео Сергія Немчинського про фул…
  3. Dec 31, 2025Залишаються лічені години 2025-го. І будьмо чесними: сам перехід на 2026-й нічого автомати…
  4. Dec 25, 2025Моє відкриття 2025 року, як доповідача, це Napkin.ai. На малюнку приклад того, як Napkin г…
  5. Dec 23, 2025А ось й ChatGPT додав 2025 review feature. Авжеж в мене half coded Nest.js app, як ще :)
  6. Dec 23, 2025Моє технічне відкриття 2025 року — centrifugal.dev У 2025-му я багато працював із реальним…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →