2017-09-11 5 views
0

La requête ci-dessous n'utilise pas correctement l'opérateur $or. Ma syntaxe est-elle incorrecte?

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) 
    } 

le sql qu'il génère ressemble à ceci.

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) 

Répondre

0

Avez-vous essayé

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

De official docs la bonne façon de faire des requêtes OR met des objets individuels pour chaque déclaration à joindre par OR dans le tableau, comme le suivantes-

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

Donc, dans votre cas, vous devez écrire:

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) 
    })