2017-02-25 3 views
2

Ich erstelle eine Scheinanwendung mit JSON-Server als Backend und ich frage mich, ob es möglich ist, die Gesamtzahl der Datensätze an einem Endpunkt zu erhalten, ohne alle zu laden zeichnet sich auf? Angenommen, die Datei db.json sieht wie das folgende JSON-Snippet aus: Wie würde ich herausfinden, dass der Endpunkt nur einen Datensatz enthält, ohne den Datensatz selbst zu laden, sofern dies möglich ist?Anzahl der Datensätze vom JSON-Server-Endpunkt

{ 
     "books": [{ 
     "title": "The Da Vinci Code", 
     "rating": "0"}] 
    } 
+0

Ich bin nicht sicher, ob ich es richtig verstehe, möchten Sie die Anzahl der Eigenschaften zurückgeben? Wenn dies der Fall ist, können Sie es analysieren und die Anzahl der Schlüssel zurückgeben. – Darlyn

+0

Nein, ich frage mich nur, ob ich die Gesamtanzahl der Datensätze mit einer Abfragezeichenfolge wie http: // localhost: 3001/books? Da ist nichts in der Dokumentation, also ist es wahrscheinlich nicht möglich, in diesem Fall muss ich nur alle Aufzeichnungen holen und herausfinden, wie viele von ihnen dort sind. Mein Grund für die Nachfrage ist, weil ich die Paginierungsfunktion verwenden möchte, aber ich sehe nicht, wie es nützlich wäre, wenn ich die Gesamtanzahl der Datensätze nicht erhalten könnte, ohne sie alle an erster Stelle zu holen. –

Antwort

3

Sie haben drei Möglichkeiten. Ich würde die 3. ein zu Ihnen empfehlen:

  1. Zurück alle Datensätze und zähle sie. Dies könnte langsam sein und viele Daten über das Kabel senden, aber wahrscheinlich ist es die kleinste Codeänderung für Sie. Es öffnet sich auch für Angriffe, bei denen Menschen Ihren Server hämmern können, indem sie wiederholt viele Datensätze anfordern.

  2. Fügen Sie einen neuen Endpunkt hinzu. Sie könnten einen neuen Endpunkt hinzufügen, der einfach die Anzahl zurückgibt. Es ist einfach, aber ein bisschen nervig mit einer zweiten Endpunkt Zeit zu dokumentieren und zu warten.

  3. Ändern Sie den vorhandenen Endpunkt. Return etwas wie

{ count: 157, rows: [...data] }

Der Vorteil von 3 ist die alles in einem Endpunkt. Sie nähert sich auch einem Punkt, an dem Sie in Zukunft die Parameter skip und take hinzufügen können, um die Paginierung der resultierenden Daten zu ermöglichen.

+0

Perfekt! Genau die Lösung, die ich mir vorgestellt habe :) –

+0

@Happy Koala Hast du herausgefunden, wie man Endpunkte schreibt, um die Anzahl und die Zeilen zu bekommen? – erwin

+0

@erwin Ja, ich tat es tatsächlich! Ich ging zu Ians drittem Vorschlag. Gibt es einen besseren Weg? –

1

Sie werden einen weiteren Endpunkt schreiben, der die Anzahl der Datensätze zurückgibt. Normalerweise können Sie auch den Endpunkt für Limit und Offset für die Paginierung verwenden.

+0

Könnten Sie mir bitte ein Beispiel mit JSON-Server geben? –

Verwandte Themen