【发布时间】:2019-03-31 12:00:20
【问题描述】:
我有一组 ID teamsIdsSelected = ['1', '5', .., 'X']
然后,我想从名为“Challenge”的表中获取与数组 teamsIdsSelected 中的每个 teamId 相关联的所有挑战。到目前为止,这是我尝试过的:
- 使用此功能:
createWhereClause(column, field) {
return models.sequelize.where(
models.sequelize.literal(`${column} in (`),
`'${field}'`,
models.sequelize.literal(')'))
},
- 以这种方式应对挑战:
const challenges = await Challenge.findAndCountAll({
where: {
team_id: createWhereClause(team_id, teamsIdsSelected)
}
})
但这不起作用,我只获得了team_id等于teamsIdsSelected = teamsIdsSelected.slice(-1)[0]最后一项的挑战
例如如果teamsIdsSelected = ['1', '4', '7'],最后的where子句(当我查看日志时)只有"where challenge.team_id = 7"。
我真正想要的是一个 OR 条件,它将所有匹配 1、4 或 7 的挑战作为 team_id。有没有不创建 for 循环的快速方法?
如果您需要更准确地了解我的问题,请告诉我。谢谢。
【问题讨论】:
-
Op.or或Op.indocs.sequelizejs.com/manual/querying.html#operators -
@bato3 非常感谢,我不知道 op.in !我如何将您的评论作为答案?
标签: javascript mysql node.js express sequelize.js