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

Jes*_*ton 5 node.js sequelize.js

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

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

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

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

User.hasMany(Device)
Run Code Online (Sandbox Code Playgroud)

我想确保在create第一次调用时,我拥有所有Device信息以及所有User信息.保持"胖模特,瘦小的控制器"我想把它放到我的模型中.可以这样做吗?

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

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

sde*_*old 6

当前的主人支持钩子.

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

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