Sequelize.js - “创建”或“构建”调用期间的模型关联

时间:2013-10-28 16:32:42

标签: node.js sequelize.js

我有一个需要关联/外键的数据模型。有没有办法在模型创建过程中强制执行该约束而不会陷入鸡/蛋的情况?

假设我有一个User类,要求至少有一个device与之关联。同样,device必须属于用户。像这样的东西(未经测试的代码,不介意语法错误):

User = db.define("user", {
    name: Sequelize.STRING
})

Device = db.define("device", {
    uuid: Sequelize.STRING
})

User.hasMany(Device)

我希望确保首次调用create时,我拥有所有Device信息以及所有User信息。保持“胖模特,瘦小的控制器”我想把它放到我的模型中。有可能做这样的事吗?

user = User.create(
    name: "jesse"
    device:
        uuid: "84e824cb-bfae-4d95-a76d-51103c556057"
)

我可以覆盖create方法吗?或者我可以使用某种类型的before保存事件挂钩吗?

1 个答案:

答案 0 :(得分:6)

当前的主人支持挂钩。

var User = sequelize.define('User', {
  username: DataTypes.STRING
}, {
  hooks: {
    beforeCreate: function(user, next) {
      makeYourCheck(function() {
        next("a string means that an error happened.")
      })
    }
  }
})

您可以查看PR以获取更多信息:https://github.com/sequelize/sequelize/pull/894