【问题标题】:Fetch associations on create or save with Sequelize使用 Sequelize 在创建或保存时获取关联
【发布时间】:2015-05-13 18:32:33
【问题描述】:

相当简单的问题,如果不调用另一个 find 就找不到好的/干净的方法来做到这一点

我已经用 Angular-Resource 安装了我的节点应用程序,我只是在对新的或更改的数据进行数据调用之类的往返。

所以 ngResource 将 $save() 调用到我的 /api/users/:id 等等。 Node 通过创建或查找用户、进行更新并保存它们来响应此调用。

无论是通过create() 还是save(),它都会返回创建的记录,而现在,我使用res.json(user) 溢出创建/返回的记录,以便我的Angular 处理用更新的信息填充我的视图

现在,我知道使用 Sequelizes find()findAll() 方法,我可以使用 findAll({ include: [{ all: true }]}) 或单独指定我的模型。

我想知道的是,在保存/创建时获取记录关联的最佳方式是什么

不幸的是,这不起作用:

models.User.create(newuser, {include:[{ all: true }]}).then(function(user) {
        res.json(user);
    });

我真的必须执行 另一个 find() 才能获得我的托管模型关联吗?

【问题讨论】:

  • 如果你正在创建一个新对象,它的关联不会是空的吗?而且,对于现有对象,您是否使用findOrCreate()?如果是这样,我相信您可以在第一个参数中提供include。如果您使用upsert(),则不确定这是否可能。
  • @st.never 不,例如,在创建我们的用户时,我们需要将他们与一个组相关联。在创建时,我已经提供了执行此操作所需的信息,但它只是不会获取。与此同时,我选择使用带有 include all 参数的.reload() 方法,这很有效,它只是很糟糕,它是另一个 sql 调用 yknow?

标签: javascript angularjs node.js sequelize.js angularjs-resource


【解决方案1】:

为了更好地说明RedactedProfile 的评论中选择的解决方案,这里是代码。

models.User
  .create(newuser, {include:[{ all: true }]})
  .then(user => {
      user.reload().then(user => { res.json(user); })
  });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    相关资源
    最近更新 更多