【问题标题】:How to include nested model in Sequelize hook?如何在 Sequelize 挂钩中包含嵌套模型?
【发布时间】:2015-02-04 05:55:33
【问题描述】:

我有一段代码看起来像

 Feed.hook('afterCreate', function(doc, fields, fn) {
    onSave(socket, doc);
    fn(null);
  });

FeedPrinter 具有多对一关系,这意味着Feed 属于Printer

我想要的是类似于:

Feed.findAll({include: [Owner, Language]})
    .then(responseWithResult(res))
    .catch(handleError(res));

但对于这种特殊情况。

如何包含与此Feed 对应的Printer 对象?

【问题讨论】:

  • 你刚刚写了 Feed.findAll({include: [Printer]})
  • 也许我没有正确解释它,但我希望它包含在某处的 .hook() 声明中。

标签: node.js sequelize.js


【解决方案1】:

也许使用通常的钩子方法,然后使用sequelizemodels 访问您需要的任何模型,也可能需要Promise

不知道为什么你需要在 afterCreate 钩子上找到包括其他对象在内的东西,但这应该是这样的:

var Promise = require('bluebird');

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('Feed', {
    description: DataTypes.TEXT
  }, {
    hooks: {
      afterCreate: [
        function (obj) {
          return new Promise(function (resolve, reject) {
            sequelize.models.Feed.findAll({include: [sequelize.models.Owner, sequelize.models.Language]})
             .then(resolve)
             .catch(reject);
          };
        }
      ]
    }
  });
};

这样您就不需要在模型定义中对模型进行其他要求了。但是使用您当前的方法,您需要一个 sequelize 实例来访问它们。

【讨论】:

    猜你喜欢
    • 2020-06-07
    • 1970-01-01
    • 2015-06-01
    • 1970-01-01
    • 2019-04-11
    • 2017-08-27
    • 2021-02-09
    • 2021-05-01
    • 1970-01-01
    相关资源
    最近更新 更多