如何使用 Sequelize 创建必需的 "BelongsTo" 关联?
How do I create a required "BelongsTo" association using Sequelize?
使用 Sequelize,我创建了两个模型:User
和 Login
。
一个用户可以有多个登录名,但一个登录名必须只有一个用户。
如何在登录模型中指定用户必须存在才能进行保存?
当前代码
var User = sequelize.define('User', {});
var Login = sequelize.define('Login', {});
Login.belongsTo(User, { foreignKey: 'userId' });
此设置仍允许在指定用户之前保存登录信息。例如 Login.build().save();
将在没有任何验证错误的情况下执行。
答案在于 foreignKey 属性,它实际上接受了一个完整的 column object。
具体来说,如果 'userId'
应该是:
Login.belongsTo(User, {
foreignKey: {
field: 'userId',
allowNull: false
},
onDelete: 'cascade'
});
注意 onDelete 也必须更新,因为 onDelete 的默认值是 SET NULL
这可能会由于规则冲突而在数据库级别产生错误。
感谢 Freenode 上#sequelizejs 中的友好朋友们!
使用 Sequelize,我创建了两个模型:User
和 Login
。
一个用户可以有多个登录名,但一个登录名必须只有一个用户。
如何在登录模型中指定用户必须存在才能进行保存?
当前代码
var User = sequelize.define('User', {});
var Login = sequelize.define('Login', {});
Login.belongsTo(User, { foreignKey: 'userId' });
此设置仍允许在指定用户之前保存登录信息。例如 Login.build().save();
将在没有任何验证错误的情况下执行。
答案在于 foreignKey 属性,它实际上接受了一个完整的 column object。
具体来说,如果 'userId'
应该是:
Login.belongsTo(User, {
foreignKey: {
field: 'userId',
allowNull: false
},
onDelete: 'cascade'
});
注意 onDelete 也必须更新,因为 onDelete 的默认值是 SET NULL
这可能会由于规则冲突而在数据库级别产生错误。
感谢 Freenode 上#sequelizejs 中的友好朋友们!