Sequelize从关系中获取模型对象

时间:2016-12-13 02:44:58

标签: node.js orm sequelize.js

当我定义一个关系时,我指定它与之相关的模型对象:

 models.Guest.belongsTo(models.Member, {foreignKey: 'guestId', as: 'guest'});

现在要在查询中使用此关系,我需要再次指定模型对象:

 Guest.findAll({
    include: models.Member,
    as: 'guest'
 });

在我的设置中,所有关系都在一个文件中定义,而各个模型本身都在文件中。设置定义了模型对象,它具有所有这些 - 并且该东西可供应用程序逻辑使用。

我想要的是直接在Guest模型对象中定义一些更复杂的查询,以将它们从应用程序中抽象出来。要做到这一点,我想找到models.Member对象 - 从关系中的某个地方检索它:

Guest.findMembers = function(){
  return this.findAll({
     include: <that model that guest is related to>,
     as: 'guest'
  });
}

请想象一下这个例子足够复杂,值得解决。例如,还有更多其他联接和where语句。或事后的数据处理。

我可以将模型对象传递给每个单独对象的设置,因此可以访问它的兄弟姐妹。这是我唯一的选择吗?

1 个答案:

答案 0 :(得分:0)

您也可以在包含模式中添加包含

Guest.findMembers = function(){
  return this.findAll({
     include: [{
        model: <that model that guest is related to>,
        as: 'guest',
        include: [{
            model: <that model that guest is related this included model>,
            as: 'setTheAlias',
        }]
     }]
  });
}