2017-02-06 1 views
5

Wie speichert und speichert Dataloader Caches und Batches in einem Schlüssel.Dataloader für Caching und Batching Datenbankanforderung

https://github.com/facebook/dataloader

Hier benötigen i Dataloader-Paket und eine Instanz erstellen, aber wie es Ideen funktioniert aby ........................ ........... für databses Abfrage bitte, gibt ein Beispiel für db Fund Tabelle

var DataLoader = require('dataloader') 

    var userLoader = new DataLoader(keys => myBatchGetUsers(keys)); 

userLoader.load(1) 
    .then(user => userLoader.load(user.invitedByID)) 
    .then(invitedBy => console.log(`User 1 was invited by ${invitedBy}`)); 

// Elsewhere in your application 
userLoader.load(2) 
    .then(user => userLoader.load(user.lastInvitedID)) 
    .then(lastInvited => console.log(`User 2 last invited ${lastInvited}`)); 

Antwort

1

Der Dataloader-Dienstprogramm von Facebook funktioniert, indem mit einer Batch-Funktion Eingabeanforderungen kombiniert, die Sie bieten müssen. Es funktioniert nur mit Anfragen, die Identifiers verwenden.

gibt es drei Phasen:

  1. Aggregationsphase: Jede Anfrage auf dem Loader Objekt wird verzögert, bis process.nextTick
  2. Batch-Phase: Die Loader rufen Sie einfach die myBatchGetUsers Funktion mit der Kombination aller angeforderten zur Verfügung gestellt haben Schlüssel.
  3. Split-Phase: Das Ergebnis wird dann "geteilt", damit die Eingabeanforderungen den gewünschten Teil der Antwort erhalten.

Das warum in Ihrem zur Verfügung gestellt Beispiel ist nur zwei Wünsche haben sollten:

  • One für Benutzer 1 und 2
  • Dann, eines für ähnliche Benutzer (invitedByID) Zur Umsetzung

dies mit mongodb zum Beispiel, sollten Sie nur definieren die myBatchGetUsers Funktion, um die find Methode geeignet zu verwenden:

function myBatchGetUsers(keys) { 
    // usersCollection is a promisified mongodb collection 
    return usersCollection.find(
     { 
      _id: { $in: keys } 
     } 
    ) 
}