首页 文章

从表中分离的Sequelize Custom Field

提问于
浏览
1

我正在尝试进行IN查询,但我查询的字段不是表的元素 . 它是硬编码的 .

await models.users.findOne({
  where: {
    id: 12,
    2: {$in: [1, 2, 3]}
  }
});

问题是,sequelize将表名放在我的字段的开头 .

WHERE `users`.`2` IN (1, 2, 3)

因为我的表中没有字段 2 它会抛出"Unknown column 'users.2' in where clause"

实际上,这是我需要的,并在本机sql中工作:

WHERE 2 IN (1, 2, 3)

UPDATE

为了更好地解释它,我正在编写整个SQL:

SELECT count(`users`.`id`) AS `count`
    FROM `users` AS `users`
      INNER JOIN `payment_log` AS `succeed_payment`
        ON `users`.`id` = `succeed_payment`.`user_id` AND `succeed_payment`.`state` = 'success'
      LEFT OUTER JOIN `user_profile` AS `profile` ON `users`.`id` = `profile`.`user_id` AND `profile`.`state` = 'submitted'
    WHERE
      `users`.`country` = 'BLR'
      AND (`users`.`kyc_state` IN ('prepared', 'applicant_created', 'consider') OR `users`.`kyc_state` IS NULL)
    GROUP BY `users`.`id`
    HAVING
      1 IN ((SELECT tag_id
             FROM user_tags UT
             WHERE users.id = UT.user_id)) AND
      2 IN ((SELECT tag_id
             FROM user_tags UT
             WHERE users.id = UT.user_id));

1和2来自URL查询 . 我正在检查客户是否有这些标签 .

不幸的是,sequelize在我的查询中添加了反引号并将其返回到:

HAVING
    `1` IN ((SELECT tag_id
             FROM user_tags UT
             WHERE users.id = UT.user_id)) AND
    `2` IN ((SELECT tag_id
             FROM user_tags UT
             WHERE users.id = UT.user_id));

在这种情况下,我收到“未知列1”错误

1 回答

  • 1

    你可以通过以下方式实现:

    where : {
        '$2$' : {$in: [1, 2, 3]}
    }
    

相关问题