如何使用 Sequelize 创建必需的 "BelongsTo" 关联?

How do I create a required "BelongsTo" association using Sequelize?

使用 Sequelize,我创建了两个模型:UserLogin

一个用户可以有多个登录名,但一个登录名必须只有一个用户。

如何在登录模型中指定用户必须存在才能进行保存?

当前代码

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 中的友好朋友们!