【发布时间】:2016-12-13 15:13:10
【问题描述】:
当我定义一个关系时,我指定它与什么模型对象相关:
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 语句。或事后数据处理。
我可以将模型对象传递到每个单独对象的设置中,因此可以访问其兄弟对象。这是我唯一的选择吗?
【问题讨论】:
标签: node.js orm sequelize.js