2014-09-11 2 views
0

Comment décririez-vous mettre en œuvre la requête suivante contre JSONStorecomplexe JSONStore requêtes

En format SQL il est

select * from table where (A or B) and (C or D) 

Je suppose que nous utiliserions une opération advancedFind avec un tableau de QueryParts, mais dans la des exemples, je peux voir comment vous pouvez utiliser QueryParts pour former et AND mais pas comment former une requête OR.

Toute aide appréciée.

Répondre

1

Prenant votre exemple SQL et en lui donnant des valeurs, il ressemblerait à ceci:

select * from people where (name = 'carlos' or name = 'mike') AND (rank = 'king' or rank = 'pawn')

Ce qui est le même que:

select * from people where (name = 'mike' AND rank = 'king') or (name = 'carlos' AND rank = 'pawn') or (name = 'carlos' AND rank = 'king') or (name = 'mike' and rank = 'pawn')

qui peut être exprimé par JSONStore pseudocode comme ceci:

var queryPart1 = WL.JSONStore.QueryPart() 
    .equal('name', 'mike') //and 
    .equal('rank', 'king'); 
//or 
var queryPart2 = WL.JSONStore.QueryPart() 
    .equal('name', 'carlos') //and 
    .equal('rank', 'pawn'); 
//or 
var queryPart3 = WL.JSONStore.QueryPart() 
    .equal('name', 'carlos') //and 
    .equal('rank', 'king'); 
//or 
var queryPart4 = WL.JSONStore.QueryPart() 
    .equal('name', 'mike') //and 
    .equal('rank', 'pawn'); 

WL.JSONStore.get('people').advancedFind([queryPart1, queryPart2, queryPart3, queryPart4]) 
.then(...); 

Tout ce qui se trouve dans une partie de requête doit correspondre (c.-à-d. c'est comme un and) et tant qu'une partie de requête correspond (c'est-à-dire comme un or) les résultats seront retournés. N'oubliez pas de travailler avec les champs de recherche de haut niveau.

Parfois, ces recherches assez complexes sont nécessaires, mais le plus souvent je recommande de repenser l'expérience hors ligne. J'ai écrit à ce sujet here.

FYI - Demande de fonctionnalités here. Rapports de bogues here.

Questions connexes