在Sequelize中使用bulkCreate插入批量数据时出错

问题描述 投票:1回答:1

我试图使用Sequelize库插入大量的数据库,但它显示一些奇怪的,因为我将一个对象数组传递给bulkCreate查询。

我有这样的功能

db.organizations
          .findAll({
            attributes: ['name'],
            where: {
              id: req.ORG_ID
            }
          })
          .then(org => {
            let i; let smsData = [];
            for (i = 0; i < user.length; i++) {
              let DefaultText = Utils.defaultMessage(
                user[i].name,
                user[i].dataValues.amount,
                org[0].name
              );
              smsData.push({
                organizationId:
                  user[i].dataValues.organizationEntries[0].organizationId,
                mobile: user[i].mobile,
                message: DefaultText,
                status: 0
              });
            }
            console.log(JSON.stringify(smsData));
            db.logSms.bulkCreate([{
              smsData
            }]).then(() => { // Notice: There are no arguments here, as of right now you'll have to...
              return db.logSms.findAll({ where: { status: 0 } });
            }).then(sms => {
              console.log(sms)
            })

我也做了console.log(smsData),它显示了对象数组,但我无法理解为什么我会遇到这个错误。

INSERT INTO log_smsidcreated_atupdated_at)VALUES(NULL,CURRENT_TIMESTAMP,CURRENT_TIMESTAMP);未处理的拒绝SequelizeDatabaseError:字段'mobile'没有默认值

这个错误基本上就像执行查询一样,因为我可以看到错误,因为我已经使移动字段成为必需的,并且我传递了具有移动号码的对象数组,但仍然会出现此错误。请给出一些提示

node.js express sequelize.js
1个回答
0
投票

我犯了错误,因为我应该从这句话中删除括号:

db.logSms.bulkCreate([{ smsData }])

它应该是这样的:

db.logSms.bulkCreate(smsData)
© www.soinside.com 2019 - 2024. All rights reserved.