У меня есть схема, подобная этой:
var MusicSchema = new Schema({
music_genres:[{
type:Schema.Types.ObjectId,
ref:'music_genres',
}],
music: {
type:String,
required:true,
},
});
Теперь, во внешнем интерфейсе, у меня есть мульти-выбор, когда пользователь выбирает один или несколько разных music_genres.
, поэтому при нажатии кнопки «Отправить» иногда я получаю (если пользователь выбрал только один жанр) - 5cab466ed076761558a76148 или несколько - ['5cab466ed076761558a76148', '5cab4915d076761558a7614a'].
Итак, если пользователь выбрал только 1 жанр, это строка, но если пользователь выбрал несколько, это массив.
router.post('/',async (req,res)=>{
const newMusic = new Music();
if(typeof req.body.music_genres === "string") req.body.music_genres = [req.body.music_genres];
for(var i in req.body.music_genres) newMusic.music_genres.push(req.body.music_genres[i]);
await newMusic.save();
Вопрос: Я ненавижу, когда пишу оператор if и проверяю, является ли он строкой, сделать его массивом.Я также ненавижу за утверждение.Есть ли способ улучшить этот код без цикла if и for?