javascript - 是否可以使用 findAll() 创建查询并通过使用来自 pivot 的 ForeignKey(关系多对多)获得过滤结果?
问题描述
我有两个表Users
,Lists
我创建了一个关联第三个表(多对多),外键 Pivot as Editors
. 我想基于枢轴返回Lists
,然后在一个查询中获取所有其他。当查询内部包含用户模型时,我可以使用 where 查询,但是当我尝试在 where 上执行时,我会收到错误。是否可以在某一时刻查询并获取过滤列表?req.user.id
FK_Editors_User_Id
editors
FK_Editors_User_Id
List.findAll()
there is no column in List.FK_Editors_User_Id
List.findAll()
all editors
获取列表方法,该方法应返回编辑器可以编辑的所有过滤列表,每个列表返回所有当前其他编辑器。
List.findAll({
where: {
'FK_EditorsLists_Users_Id': 2
},
attributes: [
'id',
'title',
'createdAt',
'updatedAt'
],
include: [{
model: User,
required: true,
attributes: [
'id',
'lastName',
'firstName',
'userName',
'email'
]
}]
})
但我不能FK_EditorsLists_Users_Id
在这种情况下使用,因为 sequalize 看不到模型Editors
内部表中的外键List
。如何将 FK 键添加到 List 模型,并且可以通过以下方式找到FK_EditorsLists_Users_Id
解决方案
一方面,我认为:您需要通知 sequelize 使用哪个关联。假设您的关联是这样的:
List.belongsToMany(User, {as: 'list2User', through: Editors, foreignKey: 'list_id', targetKey: 'id'} );
那么您的协会需要说:
List.findAll({
// ... other stuff ...
include: [{
model: User,
required: true,
as: 'list2User' // critical!!
// ... other stuff ...
where : {id : 2 }
}]
})
我上面的示例将有助于用户 2 编辑的所有列表。但是,我认为,要让这些列表的所有编辑者都需要另一个关联。
推荐阅读
- c++ - 为什么从串口读取的字节数限制在一定数量?
- javascript - TensorFlow .js 简单模型预测 2 表多个未显示正确输出?
- angular - 订阅承诺
- sql - 从包文件中提取包名和注释
- flask - 如何在 json 中包含图像文件?
- html - 为什么会在a之后直接换行
元素添加一个空格?
- reactjs - React,如何从子组件加载状态/属性
- python - 如何按每一行拆分熊猫数据框并包含每个创建的新数据框的标题?
- javascript - 将文本添加到文本输入 onKeyPress react.js
- java - 如何使用 DateTimeFormatter 用冒号解析偏移量?