2014-05-20 9 views
5

Sto provando a trovare una persona con il nome o l'identificatore OR utilizzando la sintassi Model.find di StrongLoop (documentazione qui: http://apidocs.strongloop.com/loopback/#modelfindfilter-callback).Modello Loopback StrongLoop trovare con condizione OR sul filtro WHERE

Ma non riesco a capire come specificare la condizione OR.

posso abbinare sia il nome e l'identificatore utilizzando questa sintassi:

person.find({ 
    where: { 
     'name.text': {like: 'Dave'}, 
     'identifier.value': {like: '3303927'} 
    } 
}, callback); 

Ma mi piacerebbe essere in grado di eguagliare nome o l'identificatore fare qualcosa di simile:

person.find({ 
    where: { 
     'name.text': {like: 'Dave'} || 
     'identifier.value': {like: '3303927'} 
    } 
}, callback); 

O questo non è supportato o non riesco a ottenere la sintassi corretta. Sembra che questo sia supportato tramite l'API REST (doc: http://docs.strongloop.com/display/DOC/Model+REST+API#ModelRESTAPI-Findmatchinginstances) quindi spero che sia supportato nel modo in cui sto provando a farlo.

Grazie!

risposta

6

L'operatore AND/OR è stato aggiunto di recente. Si prega di vedere alcuni esempi di utilizzo in:

https://github.com/strongloop/loopback-datasource-juggler/blob/master/test/basic-querying.test.js#L156

La sintassi è:

person.find({ 
    where: { 
     or: { 
     'name.text': {like: 'Dave'}, 
     'identifier.value': {like: '3303927'} 
     } 
    } 
}, callback); 
+1

Hai un errore di battitura lì. È necessario impostare la clausola o in questo modo: o: [{'name.text': {like: 'Dave'}}, {'identifier.value': {like: '3303927'}}] – gyss

1
person.find({ 
    where: { 
     or: [ 
      {'name.text': {like: 'Dave'}, 
      {'identifier.value': {like: '3303927'} 
     ] 
    } 
}, callback); 
+3

Si prega di fornire alcuni spiegazione anche, non solo codice grezzo. – BartoszKP