【问题标题】:Query with Sequelize使用 Sequelize 查询
【发布时间】:2019-08-02 04:09:45
【问题描述】:

我正在做这样的续集查询:

const users = await User.findAll({
    attributes: ['id', Sequelize.literal(`"firstName" || ' ' || "lastName" as name`)],
    where: { status: `[${USER_STATUS.ACTIVE}]`, organizationId: orgId }
  });

我有问题

"organization_users"."status" = ' "[1]" '

我希望它进行这样的查询:

"organization_users"."status" = '[1]'

没有双引号。谢谢你。我尝试了很多方法,但没有奏效。任何帮助表示赞赏!

我在stackoverflow上得到一个答案:

where: { status: { [Op.contains]: Sequelize.literal(`[${USER_STATUS.ACTIVE}]`) }, organizationId: orgId }

但查询是

"organization_users"."status" @> [1]

也许这是sequelize的bug?

【问题讨论】:

    标签: node.js sequelize.js


    【解决方案1】:

    您可以尝试预先将${USER_STATUS.ACTIVE} 的值存储在一个变量中,然后将该变量作为status 传递。

    const st = "[" + ${USER_STATUS.ACTIVE} + "]";
    const users = await User.findAll({
        attributes: ['id', Sequelize.literal(`"firstName" || ' ' || "lastName" as name`)],
        where: { status: st, organizationId: orgId }
      });
    

    【讨论】:

      【解决方案2】:

      我试试这个,效果很好:

        const users = await User.findAll({
          attributes: [
            'id',
            'firstName',
            'lastName',
            Sequelize.literal(`"firstName" || ' ' || "lastName" as name`)
          ],
          where: { status: { [Op.contains]: [USER_STATUS.ACTIVE] }, organizationId: orgId },
          include: [{ model: Role, as: 'roles', where: { roleName: role } }]
        }).map(u => {
          return u.dataValues;
        });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-22
        • 2017-01-19
        • 1970-01-01
        • 2019-01-27
        • 2019-11-09
        • 1970-01-01
        • 2017-03-23
        • 1970-01-01
        相关资源
        最近更新 更多