Wenn ich in Backbone JS eine Sammlung abrufe, sollte ich die gesamte Sammlung oder einen kleinen Teil davon holen?
Zum Beispiel habe ich eine Newsfeed-Sammlung in mongoDB, die potenziell Tausende von Elementen enthalten könnte. Wenn der Benutzer auf die Seite klickt, möchte ich nur die letzten 10 Elemente mit der Option "Mehr laden" anzeigen. Aber wenn sie einen bestimmten Gegenstand über die URL http://site.com/#/feed/:itemID
besuchen, möchte ich den Datensatz dieses Gegenstands hochziehen können.
1. Wie viele Dokumente sollte ich anfänglich abrufen?
2. Wie würde ich einen Gegenstand per ID abholen können?
Ich habe die {add: true}
-Anweisung benutzt, als ich fetch von meiner Sammlung anrief. Dies verhindert, dass die Sammlung durch das Ergebnis des Abrufs ersetzt wird, und hängt stattdessen das Ergebnis an die Sammlung an. Ich habe dann auch den 'skip' Betrag mit dem {data: {skip: amountOfItemsInCollectionAlready }
übergeben, dies wird auf der Serverseite verwendet, um den richtigen Stapel von Elementen aus der Datenbank zu erhalten.
Meine endgültige Abrufmethode sieht folgendermaßen aus:
%Vor% Wahrscheinlich möchten Sie nicht nur Collection.fetch()
verwenden, da Sie das clientseitige Caching nicht nutzen können - es löscht die Elemente, die Sie bereits vom Server geladen haben, und setzt die Sammlung zurück. Sie müssen wahrscheinlich Backbone.Collection
mit einer benutzerdefinierten Funktion erweitern, um weitere Elemente abzurufen. Ich habe den folgenden Code in einem aktuellen Projekt verwendet:
Dies wird meistens aus dem Standardcode fetch()
kopiert, aber anstatt vorhandene Elemente zu löschen, werden neue hinzugefügt. Wahrscheinlich möchten Sie etwas serverseitig implementieren, indem Sie das options
-Objekt verwenden, wie es Julien
vorschlägt, um die Parameter der zu ladenden Elemente zu übergeben, wahrscheinlich eine Seitennummer (wenn Sie die Seitengröße steuern möchten) der Server) oder ein Start-Stop-Paar (wenn Sie es auf dem Client steuern möchten).
Wenn ich in Backbone JS eine Sammlung abrufe, sollte ich die gesamte Sammlung oder einen kleinen Teil davon holen?
Zum Beispiel habe ich eine Newsfeed-Sammlung in mongoDB, die potenziell Tausende von Elementen enthalten könnte. Wenn der Benutzer auf die Seite klickt, möchte ich nur die letzten 10 Elemente mit der Option "Mehr laden" anzeigen. Aber wenn sie einen bestimmten Gegenstand über die URL %code% besuchen, möchte ich den Datensatz dieses Gegenstands hochziehen können.
1. Wie viele Dokumente sollte ich anfänglich abrufen?
2. Wie würde ich einen Gegenstand per ID abholen können?
Wahrscheinlich möchten Sie nicht nur %code% verwenden, da Sie das clientseitige Caching nicht nutzen können - es löscht die Elemente, die Sie bereits vom Server geladen haben, und setzt die Sammlung zurück. Sie müssen wahrscheinlich %code% mit einer benutzerdefinierten Funktion erweitern, um weitere Elemente abzurufen. Ich habe den folgenden Code in einem aktuellen Projekt verwendet:
%Vor%Dies wird meistens aus dem Standardcode %code% kopiert, aber anstatt vorhandene Elemente zu löschen, werden neue hinzugefügt. Wahrscheinlich möchten Sie etwas serverseitig implementieren, indem Sie das %code% -Objekt verwenden, wie es %code% vorschlägt, um die Parameter der zu ladenden Elemente zu übergeben, wahrscheinlich eine Seitennummer (wenn Sie die Seitengröße steuern möchten) der Server) oder ein Start-Stop-Paar (wenn Sie es auf dem Client steuern möchten).
Ich habe die %code% -Anweisung benutzt, als ich fetch von meiner Sammlung anrief. Dies verhindert, dass die Sammlung durch das Ergebnis des Abrufs ersetzt wird, und hängt stattdessen das Ergebnis an die Sammlung an. Ich habe dann auch den 'skip' Betrag mit dem %code% übergeben, dies wird auf der Serverseite verwendet, um den richtigen Stapel von Elementen aus der Datenbank zu erhalten.
Meine endgültige Abrufmethode sieht folgendermaßen aus:
%Vor%Tags und Links javascript model-view-controller backbone.js mongodb