node.js - Sequelize.js - "create"或 "build"调用期间的模型关联

标签 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 信息。与“胖模型,瘦 Controller ”保持一致,我想将其放入我的模型中。有可能做这样的事情吗?

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

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

最佳答案

当前master已经支持hooks了。

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

关于node.js - Sequelize.js - "create"或 "build"调用期间的模型关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19640201/

相关文章:

node.js - 在 NODE Sequelize 的 Bulkcreate 中出错?

javascript - Sequelize 将日期从 UTC 转换为本地

node.js - Sequelize getter方法中的SQL查询

node.js - 使用 Google Apps 脚本执行 API 时出现 ScriptError

javascript - 如何在没有 Node 的情况下使用捆绑的 react 组件?

postgresql - JS、expressJS、sequelize、postgres 等

node.js - 为什么我们需要 Sequelize 'seed' ?

javascript - CLI Node 应用程序中的堆栈溢出

node.js + postgres : Syntax error at or near "$1"

javascript - meteor .js : time-based server calls?