【问题标题】:How push a task with SpecId in firebase-queue with nodejs?如何使用 nodejs 在 firebase-queue 中使用 SpecId 推送任务?
【发布时间】:2017-02-24 21:28:38
【问题描述】:

在文档示例中我们可以看到:

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,它确实有效(当然)

【问题讨论】:

    标签: javascript node.js firebase firebase-queue


    【解决方案1】:

    tl;dr 规范的 start_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);
    

    现在这个任务应该被创建用来处理带有specIdnew_user的任务的队列中提取

    阅读官方 firebase 队列文档中的 thisthis

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多