BackboneJS: Laden Sie mehr Objekte in eine Sammlung

8

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?

    
wilsonpage 13.10.2011, 17:09
quelle

3 Antworten

13

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%     
wilsonpage 21.11.2011 10:35
quelle
5

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:

%Vor%

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).

    
nrabinowitz 13.10.2011 17:45
quelle
3
___ qstnhdr ___ BackboneJS: Laden Sie mehr Objekte in eine Sammlung ___ qstntxt ___

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?

    
___ answer7758195 ___

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).

    
___ tag123javascript ___ JavaScript (nicht zu verwechseln mit Java) ist eine dynamische Sprache mit mehreren Paradigmen auf hoher Ebene, die sowohl für das clientseitige als auch für das serverseitige Scripting verwendet wird. Verwenden Sie dieses Tag für Fragen zu ECMAScript und seinen verschiedenen Dialekten / Implementierungen (außer ActionScript und Google-Apps-Script). ___ tag123mongodb ___ MongoDB ist eine skalierbare, hochleistungsfähige Open-Source-Dokumenten-orientierte NoSQL-Datenbank. Es unterstützt eine große Anzahl von Sprachen und Anwendungsentwicklungsplattformen. Fragen zur Serververwaltung können unter http://dba.stackexchange.com gestellt werden. ___ tag123modelviewcontroller ___ Model-View-Controller (MVC) ist ein Architekturmuster, das im Software-Engineering verwendet wird. Verwenden Sie für Microsoft ASP.NET MVC stattdessen das [asp.net-mvc] -Tag. Verwenden Sie für Spring MVC bitte das [spring-mvc] -Tag. ___ tag123backbonejs ___ Backbone.js ist ein JavaScript-Framework mit einer RESTful JSON-Schnittstelle und basiert auf dem MVP-Design (Model-View-Presenter) ___ answer8210423 ___

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%     
___
Julien 13.10.2011 17:35
quelle