[英]sequelize create new record with already existing foreign key
我想為現有用戶創建一個新的登錄記錄。 我的用戶模型是這樣的:
'use strict'; module.exports = (sequelize, DataTypes) => { const User = sequelize.define('User', { userId: { type: DataTypes.INTEGER, primaryKey: true, }, firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, }, { }); User.associate = function(models) { models.User.hasMany(models.Login, { foreignKey: 'userId', as: 'loginUserId' }); }; return User; };
我的登錄模型如下所示:
'use strict'; module.exports = (sequelize, DataTypes) => { const Login = sequelize.define('Login', { loginId: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, }, ipAddress: DataTypes.STRING, isSuccessfullLogin: DataTypes.BOOLEAN, }, {}); Login.associate = function(models) { Login.belongsTo(models.User, { foreignKey: 'userId', onDelete: 'CASCADE', as: 'loginUserId' }); }; return Login; };
當我嘗試通過以下代碼在“登錄”表中插入記錄時:
const loginRecord = await models.Login.create({ ipAddress: "127.0.0.1, isSuccessfullLogin: true, loginUserId: 2, })
它拋出了我的錯誤
未處理的拒絕SequelizeDatabaseError:字段'loginUserId'沒有默認值
注意:Mysql在Login表中顯示了loginUserId,並且還顯示了它作為外鍵的約束。
任何幫助表示贊賞。
我建議將歸檔ID添加到模型Login中 ,並將ID更改為primaryKey
'use strict';
module.exports = (sequelize, DataTypes) => {
const Login = sequelize.define('Login', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
userId: DataTypes.INTEGER,
ipAddress: DataTypes.STRING,
isSuccessfullLogin: DataTypes.BOOLEAN,
}, {});
Login.associate = function(models) {
Login.belongsTo(models.User, {
foreignKey: 'userId',
onDelete: 'CASCADE',
as: 'loginUserId'
});
};
return Login;
};
將記錄插入表中登錄:
const loginRecord = await models.Login.create({
ipAddress: "127.0.0.1,
isSuccessfullLogin: true,
userId: 2,
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.