当我定义一个关系时,我指定它与之相关的模型对象:
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语句。或事后的数据处理。
我可以将模型对象传递给每个单独对象的设置,因此可以访问它的兄弟姐妹。这是我唯一的选择吗?
答案 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',
}]
}]
});
}