mysql - 我如何使用 sequelize findorcreate defaults

标签 mysql node.js sequelize.js

我正在尝试在 sequelize 中使用 findorcreate 方法,它在我的 mysql 数据库中正确地插入了一行,但是我在默认部分中输入的值没有被插入。

这是我的代码

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

这里是调试输出的insert语句

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

如您所见,它甚至没有尝试插入我在默认部分中拥有的 3 个字段。我错过了什么吗?

最佳答案

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

确保在 Sequelize.define() 中定义了 first_namelast_nameemail你的用户 模型

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

关于mysql - 我如何使用 sequelize findorcreate defaults,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751031/

相关文章:

使用嵌套选择进行 Sequelize 的 SQL

postgresql - 从 sequelize 原始查询返回更新的值

php - Laravel Eloquent 关系错误 - 调用未定义的关系

php - Laravel 4如何将表单数据提交到不同的表

javascript - Passport.js验证总是失败

javascript - 了解 Node 回调

sql - MySQL 外键数据库查询问题

mysql - 尝试使用循环时出现 SQL 错误?

javascript - 具有 Promise 的 Node js Controller 的多个退出点

javascript - 如何使用 Sequelize 创建或更新多个表?