У меня есть база данных фильмов, и все категории находятся на сервере,
я формирую запрос одной линией:
let genre = req.query.genre || "All";
const genreOptions = [
"drama",
"comedy",
"triller",
];
genre === "All" ? (genre = [...genreOptions]) : (genre = req.query.genre.split(","));
const movies = await Movie .find({ name: { $regex: search, $options: "i" } })
.where("category")
.in([...genre])
.sort(sortBy)
.skip(page * limit)
.limit(limit);
Если я добавляю подкатегорию к фильмам, например subcategory: "mysubcategory"
и меняю запрос, всё также работает:
const movies = await Product.find({ productname: { $regex: search, $options: "i" } })
.where("category")
.in([...genre])
.where('subcategory')
.equals([...subcat])
.sort(sortBy)
.skip(page * limit)
.limit(limit);
Но, если я убираю условие показа subcat:
subcat === "All" ? (subcat= [...genreOptions]) : (subcat= req.query.subcat.split(","));
на другое условие или вообще без условия:
subcat= req.query.subcat.split(",")
Node js пишет мне в консоли:
"TypeError: subcat is not iterable"
или
"TypeError: Cannot read properties of undefined (reading 'split')"
Мой запрос выглядит так:
localhost:8000/api/movies?genre=drama
При такой конструкции запроса, если не указывать -- || "All" -- альтернативный массив для показа, если такого query нет, происходит ошибка.
Возможно ли указать пустое значение в такой цепочке, если query не приходит, чтоб запрос выполнялся дальше?
Моя база данных выглядит, как:
"_id": "6420a90744a448b197042db0",
"name": "Stalker and Treasure",
genre": "drama",
"subcategory": "mysubcategory",
"actors": "A.Dolton, M.Romario, T.Milano",