我正在使用相同的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);
});
我有一个单独的过程可以将事件成功放入队列:
以下是数据库的规则,“ 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)创建新队列条目时,它将对其进行处理。
但是这两件事都没有发生。有什么建议么?