我想为现有用户创建一个新的登录记录。 我的用户模型如下:
'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,并且还显示了它作为外键的约束。
感谢您的帮助。
答案 0 :(得分:0)
我建议添加归档的 id 以建模登录,并将 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,
})