我正在尝试在 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_name
、last_name
和 email
你的用户
模型
。
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/