Запросить в базе данных подкатегорию на основе URL-пути, если подкатегории на разных уровнях могут иметь одно и то же имJavascript

Форум по Javascript
Ответить
Anonymous
 Запросить в базе данных подкатегорию на основе URL-пути, если подкатегории на разных уровнях могут иметь одно и то же им

Сообщение Anonymous »

В моем магазине есть несколько уровней вложенных категорий (сотни категорий, в которых один и тот же товар доступен в нескольких категориях), например:

Код: Выделить всё

.
├── clothes
│   ├── mens
│   │   ├── brand a
│   │   │   ├── tshirts
│   │   │   │   ├── style a
│   │   │   │   │   ├── short sleeve
│   │   │   │   │   └── long sleeve
│   │   │   │   └── style b
│   │   │   └── jeans
│   │   │       ├── style a
│   │   │       └── style b
│   │   └── brand b
│   │       ├── tshirts
│   │       │   ├── style a
│   │       │   └── style b
│   │       └── jeans
│   │           ├── style a
│   │           └── style b
│   └── womens
│       ├── brand a
│       │   ├── tshirts
│       │   │   ├── style a
│       │   │   └── style b
│       │   └── jeans
│       │       ├── style a
│       │       └── style b
│       └── brand c
│           ├── tshirts
│           │   ├── style a
│           │   │   ├── short sleeve
│           │   │   └── long sleeve
│           │   └── style b
│           └── jeans
│               ├── style a
│               └── style b
├── toys
│   ├── 0-6
│   │   ├── cars
│   │   └── dolls
│   └── 7-12
│       ├── cars
│       └── dolls
└── offers
├── clothes
│   ├── mens
│   │   └── brand a
│   │       ├── tshirts
│   │       │   ├── style a
│   │       │   │   ├── short sleeve
│   │       │   │   └── long sleeve
│   │       │   └── style b
│   │       └── jeans
│   │           ├── style a
│   │           └── style b
│   └── womens
│       └── brand c
│           ├── tshirts
│           │   ├── style a
│           │   │   ├── short sleeve
│           │   │   └── long sleeve
│           │   └── style b
│           └── jeans
│               ├── style a
│               └── style b
└── toys
├── 0-6
│   ├── cars
│   └── dolls
└── 7-12
├── cars
└── dolls
Как вы можете видеть в этом примере, существует несколько категорий с одинаковым именем, и они могут быть вложены на разных уровнях без заданного количества уровней.
Изначально я использовал маршрут типа и использовал location.state для передачи идентификатора с навигацией. Затем я мог запросить этот идентификатор в своей базе данных, и это было достаточно просто.
Это сработало для навигации по сайту, но мы хотим иметь возможность использовать URL-адреса в объявлениях, которые не будут передавать location.state, чтобы URL-адрес мог быть /category/special-offers/mens/brand-a/tshirts или Category/toys/0-6/cars
Думаю, мне придется использовать такой маршрут: а затем что-то вроде:

Код: Выделить всё

let { c1, c2, c3, c4, c5, c6, c7, c8, c9, c10 } = useParams();
let categoryTree = [c1, c2, c3, c4, c5, c6, c7, c8, c9, c10];
categoryTree = categoryTree.filter(elm => elm);
Моя структура БД на данный момент имеет категории с родительским полем, например имя, описание, изображение, родительский идентификатор. Категории верхнего уровня будут иметь родительский идентификатор, равный нулю.
Нужно ли мне начинать запрашивать мою базу данных для категории верхнего уровня и запрашивать имя каждой категории с ее родительским элементом?
Итак, для /category/special-offers/mens/brand-a/tshirts

я бы начал с чего-то вроде name:special-offers && ParentId:null

Затем, когда я получу это имя идентификатора:mens && родительскийId:{Id из первого запроса

и так далее.
Или есть лучший способ структурировать мою базу данных для запроса рассматриваемой категории со всем путем?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ories-at-d
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»