在Sequelize

时间:2018-03-02 14:44:58

标签: node.js express sequelize.js

我正在尝试使用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:Field&#39; mobile&#39;没有默认值

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

1 个答案:

答案 0 :(得分:0)

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

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

它应该是这样的:

db.logSms.bulkCreate(smsData)