我如何使用sequelize findorcreate默认值

时间:2016-11-22 20:29:09

标签: mysql node.js sequelize.js

我正在尝试在sequelize中使用findorcreate方法并且它正确地在我的mysql数据库中插入一行,但是我在defaults部分中放置的值没有被插入。

这是我的代码

return userDb
  .findOrCreate({
    defaults: {
      first_name: 'john',
      last_name: 'doe',
      email: 'test@test.com'
    },
    where: {
      user_id:UserId
    }
  })

这是调试输出的插入语句

INSERT INTO `user` (`id`,`user_id`,`deleted`,`created_on`) VALUES (DEFAULT,200,'0',NOW());

你可以看到它甚至没有尝试在默认部分插入我有的3个字段。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

您在INSERT中看到的字段都是Sequelize为Model /表创建的默认列,因此User Sequelize Model可能未定义正常。由于Model不包含这些列,因此无法应用您在defaults中指定的字段。

确保您为first_name last_name email中的Sequelize.define()UserModel定义。

const sequelize = new Sequelize();
const User = sequelize.define(
  'user',
  {
    first_name: {
      type: Sequelize.STRING,
    },
    last_name: {
      type: Sequelize.STRING,
    },
    email: {
      type: Sequelize.STRING,
    },
  }
);