rql multiple Dokumente aus der Liste der Schlüssel rethinkdb in Javascript erhalten

7

Ich habe also eine Tabelle mit "Personendaten", die einen eindeutigen Schlüssel "id" haben. Ich habe eine Liste von IDs, von denen ich die Daten erhalten möchte, für die ich als JSON-Array vom Client zum Server senden werde. Der Serve empfängt diese Daten als JSON-Array.

Jetzt gibt es eine Möglichkeit, eine Abfrage auszuführen, die die Dokumente für jede dieser IDs erhält?

Oder ist meine einzige Option, die IDs selbst zu parsen und ein Array von Ergebnissen zu erstellen, dann senden Sie das Array zurück.

Bisher habe ich versucht mit ...

  • getAll - aber ich kann das nicht zum Laufen bringen, weil es eine dynamische Menge von Parametern akzeptiert und ich nicht weiß, wie ich meine Werte in eine dynamische Menge von Parametern ändern kann.

    (Beispiel ... Ich möchte tun können, was unten gezeigt wird, aber ich kann nicht)

    %Vor%

    Ich kann das nur tun ...

    %Vor%
  • expr und forEach - wie unten zu sehen, aber ich glaube nicht, dass das funktionieren kann.

    %Vor%
CamHart 03.12.2013, 10:00
quelle

4 Antworten

6

kurze Antwort:

%Vor%

Längere Antwort:

Es gibt mehrere Möglichkeiten, dies zu tun. Das Obenstehende würde ich den kanonischen Weg nennen. Lassen Sie uns zusammenfassen, was passiert:

Zuerst mit r.expr([id1, id2, id3]) packen wir das Array zusammen, um es an den Server zu senden.

Dann rufen wir eqJoin auf, was es tut, ist ein Strom von Werten zu nehmen und pro CoDe% zu verteilen und zu indizieren. Der get ist ein etwas hässlicher Hack, weil function(doc) { return doc; } eine Mapping-Funktion benötigt.

Am Ende entspricht der obige Code:

%Vor%     
Joe Doliner 03.12.2013, 11:01
quelle
18

Sie können getAll auch mit einem dynamischen Array verwenden. Sie müssen auf apply

zurückgreifen %Vor%

Beachten Sie, dass Sie jetzt seit 1.12 einfach

tun können %Vor%     
neumino 04.12.2013 03:33
quelle
1

Update für 2017. Verwenden Sie den ES6-Spread-Operator '...'

%Vor%     
Visualize 05.05.2017 15:41
quelle
0

Sie können .expr mit .map für eine sauberere Alternative zu .eqJoin

verwenden %Vor%     
aleclarson 30.06.2017 00:28
quelle

Tags und Links