簡體   English   中英

有沒有辦法在 where: $or 子句中包含一個數組?

[英]Is there a way to include an array in a where: $or clause with sequelize?

我有一組 Ids teamsIdsSelected = ['1', '5', .., 'X']

然后,從名為“挑戰”的表中,我想從數組 teamIdsSelected 中獲取與每個 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 循環的情況下做到這一點?

如果您需要更精確地了解我的問題,請告訴我。 謝謝。

const challenges = await Challenge.findAndCountAll({
    where: {
        team_id: { [Op.in]: teamsIdsSelected }
    }
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM