newdecline
@newdecline
Front-end-developer

Как генерировать уникальные slug для ЧПУ?

Есть в БД таблица постов и там же колонки name и slug.
slug строится на основе строки из name.
name="title" -> slug="title"
name="title-1" -> slug="title-1"
name="title-2" -> slug="title-2"

Не смог сделать так что бы если имя в колонке name совпало с уже существующем при создании нового поста, то slug пририсовывал себе цифру. Например:
name="title" -> slug="title"
name="title" -> slug="title-1"
name="title" -> slug="title-2"
name="title" -> slug="title-3"

Пробовал разные способы, но без успеха.

Стек mysql+nodejs(NestJS)
  • Вопрос задан
  • 294 просмотра
Пригласить эксперта
Ответы на вопрос 1
FinGanapre
@FinGanapre
Поле name по сути уникальное должно быть в вашем случае и не может совпадать. Но если по каким-то причинам это не так, то там где у вас валидация перед добавлением, проверять на совпадение имени и генерировать с использованием даты. Т.е. добавлять не 1-2-3, а дату в slug. Как вариант. После генерации можно проверить есть ли такой slug в бд, но если с точностью до мс генерировать слаг, такое прям ооочень маловероятно... но можно добавить такую проверку. Просто это всё запросы к бд и их лучше много не плодить.
Если всё же нужно 1-2-3 то получать все записи с таким name, смотреть максимальный номер в slug и прибавлять 1.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы