2016-04-06 1 views
1

In dem Dokument Beispiel können wir sehen:Wie eine Aufgabe mit SpecId in Firebase-Queue mit Nodejs schieben?

var Queue = require('firebase-queue'), 
    Firebase = require('firebase'); 

var ref = new Firebase('https://<your-firebase>.firebaseio.com'); 
var queueRef = ref.child('queue'); 
var messagesRef = ref.child('messages'); 

var options = { 
    'specId': 'new_user' 
}; 

new Queue(queueRef, options, function(data, progress, resolve, reject) { 
    // sanitize input message 
    console.log(data.message); 

    // pass sanitized message and username along to be fanned out 
    resolve(data); 
}); 

Wie eine neue Aufgabe mit dem specId

var task = {'userId': "0338ba4d-191f-4044-9af0-4c76f47aeef9"}; 

ref.child("queue").child("tasks").push(task); 

Dieser Push hat benutzerdefinierte specId new_user oder andere speichern Sie die Warteschlange nicht auslösen. Wenn ich die options aus der Warteschlange zu entfernen, funktioniert es (natürlich)

Antwort

4

tl; dr die start_state für die Spezifikation sollte die _state der Aufgabe entsprechen.

Sie müssen die Definition jeder Spezifikation in die Firebase-Warteschlange verschieben. Für z.B.

ref.child('queue/specs').set({ 
    new_user: { 
    start_state: 'add_new_user', 
    in_progress_state: 'add_new_user_in_progress' 
    } 
    }); 

Hier new_user ist die specId, die Sie für die Warteschlange angegeben haben. Wenn Sie nun eine Aufgabe ausführen, müssen Sie die _state für die Spezifikation auf start_state setzen. Für z.B.

var task = {'userId': "0338ba4d-191f-4044-9af0-4c76f47aeef9", '_state': 'add_new_user'}; 
ref.child("queue").child("tasks").push(task); 

Nun sollte diese Aufgabe in die Warteschlange aufgenommen werden, das behandelte Aufgaben mit specIdnew_user

lesen this und this in der offiziellen Feuerbasis Warteschlange Dokumentation erstellt wird.