добавление поразрядно и с колонкой в ​​дальнейшем - PullRequest
0 голосов
/ 12 июня 2018

Я пытался сделать это, но это.

Building.findAll({
    attributes: ['id', 'bitwise'],
    where: Sequelize.and(
        Sequelize.where(Sequelize.literal('bitwise & 2'), '!=', 0),
        Sequelize.where(Sequelize.literal('bitwise & 4'), '=', 0)
    )
})

, но это не работает с Sequelize v4 API.

Я пытался написать что-то вроде этого

Subscription.findAll({
  where: { [Op.and]: { status: "active", Sequelize.literal(`deliveryBitMask & 1`), '=', 0 }
})

Это дает мне неожиданную ошибку токена.

Как мы можем передать буквальный объект для продолжения?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Я хочу добавить к ответу выше

Subscription.findAll({
  where: { [Op.and]: [ {status: "active"}, Sequelize.literal("deliveryBitMask & 1 = 0")] }
})

Executing (default): SELECT "id", "deliveryBitMask", "qty", "status", "createdAt", "updatedAt" FROM "Subscriptions" AS "Subscription" WHERE ("Subscription"."status" = 'active' AND deliveryBitMask & generate 

Это будет генерировать запрос как этот.

, но он преобразует столбец deliveryBitMask, поскольку литерал запроса не заключен в кавычки.поэтому используйте escape-символ для кавычки в строке запроса. PostgreSQL преобразует все имена столбцов таблицы в строчные, если они не заключены в кавычки.

0 голосов
/ 12 июня 2018

Используйте AND с массивом таких условий:

Subscription.findAll({
  where: { [Op.and]: [ {status: "active"}, Sequelize.literal("deliveryBitMask & 1 = 0")] }
})

Кажется невозможным смешивать литерал с операторами (например, =) из любых примеров, которые я видел.Но я не уверен на 100%, потому что документы не являются исчерпывающими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...