如何在Sequelize钩子中包含嵌套模型?

时间:2015-01-22 23:38:01

标签: node.js sequelize.js

我有一段看起来像

的代码
 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));

但是对于这个具体案例。

如何添加与此Printer对应的Feed对象?

1 个答案:

答案 0 :(得分:0)

也许使用常用的钩子方法,然后使用sequelize models来访问您需要的任何模型,也可能需要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实例来访问它们。