如何解析nomData数组并与userEmail组合为对象,现有代码运行异常
问题排查
你的代码存在以下几个核心错误:
- Sequelize的
bulkCreate方法要求传入对象数组,你当前的写法既没有生成符合格式的数组,也没有给方法传入正确的参数 - 你定义的
map回调没有返回值,执行后得到的newArray全是undefined,而且循环过程中一直在覆盖同一个formData对象的属性,完全拿不到多组提名数据 - 代码中
var data = ...这一行用到的email、name、team、reason都是未声明的变量,运行会直接报错 - 原有逻辑只判断了历史提名数量≤3就放行,没有算上本次提交的提名数量,会导致超量提交的问题
修正后代码
app.post('/service/nominateperson', async (req, res) => { try { const userEmail = req.body.userEmail; const nomData = req.body.nomRegister; // 直接用map生成符合bulkCreate要求的对象数组 const nominationList = nomData.map(item => ({ useremail: userEmail, nomineeemail: item.email, nomineename: item.name, nomineeteam: item.team, reason: item.reason })); // 查询当前用户已有的提名数量 const numberOfNominations = await NominationModel.count({where: {useremail: userEmail}}); // 校验总数量:已有提名数+本次提交提名数不能超过3 if (numberOfNominations + nominationList.length <= 3) { await NominationModel.bulkCreate(nominationList); res.status(200).json({message: "Nomination submitted successfully !"}); } else { res.status(202).json({message: "Nomination limit exceeded, please try next week !"}); } } catch (e) { res.status(500).json({fail: e.message}); } });
内容的提问来源于stack exchange,提问作者soccerway
相关产品推荐
相关产品推荐

