如何在具有nodejs的firebase队列中使用SpecId推送任务?
在文档的例子中我们可以看到:
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); });
如何使用specId new_user
或其他自定义specId
保存新任务
var task = {'userId': "0338ba4d-191f-4044-9af0-4c76f47aeef9"}; ref.child("queue").child("tasks").push(task);
这推不会触发队列。 如果我从队列中删除options
,它确实工作(当然)
tl; dr规范的_state
应该匹配任务的_state
。
您需要将每个规范的定义推送到Firebase队列。 例如
ref.child('queue/specs').set({ new_user: { start_state: 'add_new_user', in_progress_state: 'add_new_user_in_progress' } });
这里new_user
是你为队列指定的specId。 现在,当您推送一个任务时,您需要将_state
设置为规范的start_state
。 例如
var task = {'userId': "0338ba4d-191f-4044-9af0-4c76f47aeef9", '_state': 'add_new_user'}; ref.child("queue").child("tasks").push(task);
现在这个任务应该被拾取到创build的队列来处理specId
new_user
任务
在官方firebase队列文档中阅读这个和这个 。