2016-10-19 5 views
0

Ich arbeite an einem Projekt, bei dem Benutzer mit Eigenschaften wie Alter, Hautfarbe, Sprachen, Größe usw. in SQL registriert sind.Suche Benutzer, die den Suchkriterien entsprechen

Ich möchte Suchfunktion für registrierte Benutzer bieten, die Bereichswerte akzeptieren. Beispiel Suche Benutzer zwischen 15 und 20, die Englisch und Französisch sprechen können und Hautfarbe ist Schwarz. Auch diese Anfrage muss in SQL gespeichert werden.

Eine Möglichkeit dazu ist: Stellen Sie das Anfrageobjekt bereit, das basierend auf dem gesuchten Attribut erstellt wird. Wie

searchUsersRequest : { 
"age" : { 
     "min" : 15 
     "max" : 20 
     }, 
"languages" : [ 
      "English", 
      "French" 
     ], 
"skinColor" : [ 
      "Brown", 
      "Black" 
     ], 
    . 
    . 
    . 
    . 
} 

Nach der Anforderung Lesen, Abfrage erstellen und zu db laufen.

Hier sind zwei Fragen:

  1. Gibt es eine bessere Art und Weise/generic Ansatz, um dieses Problem zu lösen?

  2. Wie soll ich dieses Anfrageobjekt in der DB gespeichert haben? Sollte ich es nur als eine Saite oder auf andere Weise speichern?

Vielen Dank im Voraus für Ihre Vorschläge!

Antwort

0

1) Stellen wir uns vor, Sie hätten ein Anfrageobjekt SearchUsersRequest mit allen Informationen, die Sie benötigen, um Ihre Anfrage zu erstellen. Dieses Objekt kann von einer benutzerdefinierten FilterBuilder "geparst" werden, die eine rohe Abfrage oder eine komplexere QueryFilter erstellen, wenn Sie ein ORM verwenden. Wenn Sie von einem generischen Ansatz sprechen, können Sie die "Search Request" -Feautures in eine benutzerdefinierte Klassenhierarchie abstrahieren und verwenden, um bestimmte Parameter für Ihre FilterBuilder-Methoden zu definieren.

2) Warum müssen Sie es in der Datenbank speichern? Es ist kein üblicher Ansatz. Wenn es jedoch eine zwingende Voraussetzung ist, können Sie json o eine Art xml Notation verwenden, um Objektstruktur und Zeichenfolge (oder Varchar) als Datenbanktyp zu behalten. Dann, wenn Sie es aus der Datenbank abrufen müssen Sie es, um zu analysieren, um Ihre Anfrage Objekt zurück

Hoffnung zu bauen diese Sie

+0

Dank Andrea helfen könnte! Ich gehe auch mit dem zweiten Ansatz bis jetzt. – user3089214

Verwandte Themen