【问题标题】:Is there a way to include an array in a where: $or clause with sequelize?有没有办法在 where: $or 子句中包含一个数组和 sequelize?
【发布时间】:2019-03-31 12:00:20
【问题描述】:

我有一组 ID teamsIdsSelected = ['1', '5', .., 'X']

然后,我想从名为“Challenge”的表中获取与数组 teamsIdsSelected 中的每个 teamId 相关联的所有挑战。到目前为止,这是我尝试过的:

  1. 使用此功能:
    createWhereClause(column, field) {
        return models.sequelize.where(
            models.sequelize.literal(`${column} in (`),
            `'${field}'`,
            models.sequelize.literal(')'))
    },
  1. 以这种方式应对挑战:
    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 循环的快速方法?

如果您需要更准确地了解我的问题,请告诉我。谢谢。

【问题讨论】:

标签: javascript mysql node.js express sequelize.js


【解决方案1】:
const challenges = await Challenge.findAndCountAll({
    where: {
        team_id: { [Op.in]: teamsIdsSelected }
    }
})

【讨论】:

    猜你喜欢
    • 2018-01-08
    • 2017-08-27
    • 2021-09-13
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 2019-12-24
    • 2019-03-21
    • 2012-03-04
    相关资源
    最近更新 更多