【发布时间】:2019-08-29 16:02:11
【问题描述】:
我有这样的架构:
var MusicSchema = new Schema({
music_genres:[{
type:Schema.Types.ObjectId,
ref:'music_genres',
}],
music: {
type:String,
required:true,
},
});
现在,在前端,我有一个多重选择,用户可以选择一种或多种不同的音乐流派。
所以当点击提交时,有时我会得到(如果用户只选择了一种类型) - 5cab466ed076761558a76148 或多个 - ['5cab466ed076761558a76148', '5cab4915d076761558a7614a']。
所以,如果用户只选择了一种类型,它是字符串,但如果用户选择了多种,它是数组。
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 循环,有什么方法可以使这段代码更好?
【问题讨论】:
标签: node.js mongodb express mongoose mongoose-schema