Javascript belongAsmany eager加载为每个关联返回多个对象

Javascript belongAsmany eager加载为每个关联返回多个对象,javascript,node.js,orm,sequelize.js,Javascript,Node.js,Orm,Sequelize.js,我有两个模型:用户模型和经济活动模型。它们通过用户经济活动(这是一种归属关系)联系在一起。在用户模型中,我定义了如下关联: this.belongtomany(模型、经济活动、{ 通过:“用户经济活动”, 如:“经济活动”, 其他键:{ 名称:“经济活动ID”, allowNull:错误 }, 外键:{ 名称:'userId', allowNull:错误 } }) 我试图查询用户,它在哪里与一个或多个经济活动相关,如下所示: const users=wait User.findAll({ 包括

我有两个模型:用户模型和经济活动模型。它们通过用户经济活动(这是一种归属关系)联系在一起。在用户模型中,我定义了如下关联:

this.belongtomany(模型、经济活动、{
通过:“用户经济活动”,
如:“经济活动”,
其他键:{
名称:“经济活动ID”,
allowNull:错误
},
外键:{
名称:'userId',
allowNull:错误
}
})
我试图查询用户,它在哪里与一个或多个经济活动相关,如下所示:

const users=wait User.findAll({
包括:[
{
模式:经济活动,
如:“经济活动”,
其中:{
id:filters.economicActivities//这是一个包含我要筛选的id的数组
}
}
],
raw:是的,
鸟巢:是的
})

假设一个特定用户与2个经济活动相关。当我运行这个查询时,它会返回同一个用户两次,每个关联一次。我只想返回同一个用户一次,其中包含一系列相关的经济活动(比如user.economicActivities)。这是可能的吗?

通过将
raw
设置为true,您明确要求使用此结果格式。 我在这里也看不到
nest
的用法

我建议您删除这两个参数


有关更多信息,请参阅。

正如我在一篇评论中所说的,我需要使用raw和nest,因为我正在将数据传递给Handlebar,Handlebar只能输出普通JavaScript对象,否则它会给我错误
Handlebar:解析属性“name”的访问被拒绝,因为它不是“自有属性”它的父项的
,并且不会输出数据

但是,我找到了一种获取普通JavaScript对象并将所有关联保留在数组中的方法:

等待this.model.findAll(query.map)(item=>item.get({plain:true}))

模型的
get
方法正是我想要的。因为我使用的是
findAll
,所以我使用ES6映射方法从查询返回的每个模型调用
get

我需要它作为普通JavaScript对象返回,因为我将在Handlebar模板文件中输出它。如果我不使用raw,Handlebars会给我一个警告(Handlebars:解析属性“name”的访问被拒绝,因为它不是其父级的“自有属性”),并且不会输出属性。我还使用nest来创建适当的对象(我有更多的include,我只是在这里省略它)。