【发布时间】:2020-07-06 23:51:23
【问题描述】:
我是使用 Sequelize 的新手,我遇到了一个我不明白为什么会发生的问题。我正在尝试创建一个新用户,用户的数据在两个表中定义。一个是 user 表,其中包含一般用户的信息,例如名字、姓氏、电子邮件等。另一个表包含用户的设置,例如用户想要使用的配色方案等。这些表的模型如下所示。
用户模型:
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('user', {
user_id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
},
firstname: {
type: DataTypes.STRING,
allowNull: false,
},
lastname: {
type: DataTypes.STRING,
allowNull: false,
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: {
args: true,
},
},
password: {
type: DataTypes.STRING,
allowNull: false,
}
}
);
return User;
};
用户设置模型:
module.exports = (sequelize, DataTypes) => {
const UserSettings = sequelize.define('user_settings', {
user_id: {
type: DataTypes.INTEGER,
unique: true,
allowNull: false
},
wants_update_notification: {
type: DataTypes.BOOLEAN,
allowNull: false
},
color_scheme: {
type: DataTypes.INTEGER,
allowNull: false
}
});
UserSettings.associate = (models) => {
UserSettings.belongsTo(models.User, { foreignKey: 'user_id', as: 'user' });
};
return UserSettings;
}
现在,当我尝试创建新用户时,服务器会通过端点的主体获取一般用户的信息。使用此信息,服务器创建一个新用户。接下来我将默认用户设置添加到创建的用户返回的对象中,并尝试将数据插入到用户设置表中,如下所示:
let theUser = await sequelizeConnection.models.user.create(req.body);
theUser.wants_update_notification = false;
theUser.color_scheme = 0;
await sequelizeConnection.models.user_settings.create(theUser);
但是,这会返回错误:user_settings.user_id cannot be null。我觉得这很奇怪,因为 user_id 是由用户模型的 create 方法返回的。如果我记录theUser 的内容,我可以清楚地看到存在一个user_id。这是怎么回事?
【问题讨论】:
标签: sequelize.js