firebase-queue工作者不监听事件,不检索现有事件

时间:2019-07-12 20:38:31

标签: firebase-queue

我正在使用相同的code from the firebase-queue guide

// my_queue_worker.js

var Queue = require('firebase-queue');
var admin = require('firebase-admin');

var serviceAccount = require('path/to/serviceAccountCredentials.json');
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: '<your-database-url>'
});

var ref = admin.database().ref('queue');
var queue = new Queue(ref, function(data, progress, resolve, reject) {
  // Read and process task data
  console.log(data);

  // Do some work
  progress(50);

  // Finish the task asynchronously
  setTimeout(function() {
    resolve();
  }, 1000);
});

我有一个单独的过程可以将事件成功放入队列:

firebase-queue console

以下是数据库的规则,“ collection”和“ data”是队列数据库表中的属性:

 {
  "rules": {
    "queue": {
      "tasks": {
        ".read": true,
        ".write": true,
        ".indexOn": "_state",
        "$taskId": {
          ".validate": "newData.hasChildren(['collection', 'data'])",
          "_state": {
            ".validate": "newData.isString()"
          },
          "_state_changed": {
            ".validate": "newData.isNumber() && (newData.val() === now || data.val() === newData.val())"
          },
          "_owner": {
            ".validate": "newData.isString()"
          },
          "_progress": {
            ".validate": "newData.isNumber() && newData.val() >= 0 && newData.val() <= 100"
          },
          "_error_details": {
              "error": {
                ".validate": "newData.isString()"
              },
              "error_stack": {
                ".validate": "newData.isString()"
              },
              "previous_state": {
                ".validate": "newData.isString()"
              },
              "original_task": {
                /* This space intentionally left blank, for malformed tasks */
              },
              "attempts": {
                ".validate": "newData.isNumber() && newData.val() > 0"
              },
              "$other": {
                ".validate": false
              }
          },
          "_id": {
            ".validate": "newData.isString()"
          },
          "collection": {
            ".validate": false
          },
          "data": {
            ".validate": false
          }
        }
      },
      "specs" : {
        ".read": true,
        ".write": true,
        "$specId": {
          ".validate": "newData.hasChild('in_progress_state')",
          "start_state": {
            ".validate": "newData.isString()"
          },
          "in_progress_state": {
            ".validate": "newData.isString()"
          },
          "finished_state": {
            ".validate": "newData.isString()"
          },
          "error_state": {
            ".validate": "newData.isString()"
          },
          "timeout": {
            ".validate": "newData.isNumber() && newData.val() > 0"
          },
          "retries": {
            ".validate": "newData.isNumber() && newData.val() >= 0"
          },
          "$other": {
            ".validate": false
          }
        }
      }
    }
  }
}

我期望发生的是:
1)firebase-queue worker启动时,它将检查现有队列条目并开始工作。
2)创建新队列条目时,它将对其进行处理。

但是这两件事都没有发生。有什么建议么?

0 个答案:

没有答案