Sequelize $或不工作

时间:2017-09-11 17:42:05

标签: javascript node.js sequelize.js

以下查询未正确使用$or运算符。我的语法错了吗?

models.Accounts
    .find({ where: { 
              venue_id: req.body.venue_id,
              $or: [{
                organization_id: req.body.organization_id//,
                //venue_id: null
              }]
            }
          })
    .then(function(result) {
     console.log(result)
    }

它生成的sql看起来像这样。

SELECT `id`, `uuid`, `venue_id`, `organization_id`, `labor_service_name`, `created_at`, `updated_at` FROM `accounts` AS `Accounts` WHERE `Accounts`.`venue_id` = NULL AND (`Accounts`.`organization_id` = 2)

3 个答案:

答案 0 :(得分:2)

official docs开始,OR查询的正确方法是将每个语句的单个对象放在数组中由OR加入,如下所示 -

$or: [{a: 5}, {a: 6}]

所以在你的情况下,你应该写 -

models.Accounts
    .find({
        where: {
            $or: [
                { organization_id: req.body.organization_id },
                { venue_id: req.body.venue_id }
                //venue_id: null
            ]
        }
    })
    .then(function (result) {
        console.log(result)
    })

答案 1 :(得分:0)

你试过吗

-'American'+'Japanese'

答案 2 :(得分:0)

给出的答案已过时。使用当前的续集,您想使用 Operators 用于此类操作。对于此用例,Op.or 的用法如下:

import { Op } from 'sequelize';

models.Accounts
    .findAll({
        where: {
            [Op.or]: [
                { organization_id: req.body.organization_id },
                { venue_id: req.body.venue_id }
            ]
        }
    })

还要注意当前的 findersfindOnefindAll 等等。