Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Firebase队列一个队列上的多个规范都会被执行,或者选择错误的规范_Node.js_Firebase_Angularfire_Firebase Realtime Database_Firebase Queue - Fatal编程技术网

Node.js Firebase队列一个队列上的多个规范都会被执行,或者选择错误的规范

Node.js Firebase队列一个队列上的多个规范都会被执行,或者选择错误的规范,node.js,firebase,angularfire,firebase-realtime-database,firebase-queue,Node.js,Firebase,Angularfire,Firebase Realtime Database,Firebase Queue,我有一个Firebase队列和两个规范,在同一个队列上,我从客户端推送队列,启动状态为只读写启动,要么默认执行我的两个规范,要么执行错误的规范,即执行“读写启动”规范 客户端: var readWriteTokenData = {}; readWriteTokenData ["_start"] = "read_write_start"; $firebaseArray(QueueRef.child('tasks')).$add(readWriteTo

我有一个Firebase队列和两个规范,在同一个队列上,我从客户端推送队列,启动状态为只读写启动,要么默认执行我的两个规范,要么执行错误的规范,即执行“读写启动”规范

客户端:

var readWriteTokenData = {};
                        readWriteTokenData ["_start"] = "read_write_start";
$firebaseArray(QueueRef.child('tasks')).$add(readWriteTokenData);
服务器端:

var queueRef = new Firebase('https://<INSTANCE>.firebaseio.com/queue');

    var specs: {
        "read_write_token": {
            "_start_state" : "read_write_start",
            "in_progress_state": "read_write_in_progress",
            "finished_state": "read_write_finished",
            "error_state": "read_write_error"
        },
        "read_token": {
            "_start_state" : "read_start",
            "in_progress_state": "read_in_progress",
            "finished_state": "read_finished",
            "error_state": "read_error"
        }
     }

    queueRef.child('specs').update(specs);

    var option1 = {
        'specId' : 'read_token',
        'numWorkers': 1
    };

    var option2 = {
        'specId' : 'read_write_token',
        'numWorkers': 1
    };

var ReadQueue = new Queue(queueRef,option1,function(data, progress, resolve, reject) {

    data.readToken = 'PQR';

    if(readToken){
        resolve(data);
    } else {
        reject(data);
    }
});

var ReadWriteQueue = new Queue(queueRef,option2,function(data, progress, resolve, reject) {

    data.readWriteToken = 'ABC';
    if(readWriteToken){
        resolve(data);
    } else {
        reject(data);
    }
});
var queueRef=new Firebase('https://.firebaseio.com/queue');
变量规格:{
“读写令牌”:{
“\u开始\u状态”:“读写\u开始”,
“正在进行状态”:“正在进行读写”,
“完成状态”:“读写完成”,
“错误状态”:“读写错误”
},
“读取令牌”:{
“\u开始\u状态”:“读取\u开始”,
“正在进行状态”:“正在进行读取”,
“完成状态”:“读取完成”,
“错误状态”:“读取错误”
}
}
queueRef.child('specs')。更新(specs);
变量选项1={
'specId':'read_token',
“numWorkers”:1
};
变量选项2={
'specId':'read_write_token',
“numWorkers”:1
};
var ReadQueue=新队列(queueRef,option1,函数(数据、进度、解析、拒绝){
data.readToken='PQR';
如果(读令牌){
解析(数据);
}否则{
拒绝(数据);
}
});
var ReadWriteQueue=新队列(queueRef,option2,函数(数据、进度、解析、拒绝){
data.readWriteToken='ABC';
如果(读写通){
解析(数据);
}否则{
拒绝(数据);
}
});
我不确定我遗漏了什么文件不清楚

我是否必须为每个规范实例化一个新的队列引用?规范是否仅用于链接作业

我应该这样做吗

var queueRef1 = new Firebase('https://<INSTANCE>.firebaseio.com/read/queue');
var queueRef2 = new Firebase('https://<INSTANCE>.firebaseio.com/readwrite/queue');
var queueRef1=new Firebase('https://.firebaseio.com/read/queue');
var queueRef2=新的Firebase('https://.firebaseio.com/readwrite/queue');

看起来您在两个队列工作人员身上都使用了
选项2
。这是上面代码中的一个错误,而不是我的实际代码中的错误,因为规范需要是
启动状态
而不是
启动状态
-工作人员可能都在执行
状态
null
的任务,并且相互竞争other@ChrisRaynor对于不同类型的任务,这样做更好的选择是什么:1)将所有任务放在一个具有不同规格(未链接)的队列中,并从具有_状态集的客户端应用推送,或2)使用多个数据创建多个队列以执行不同类型的任务,如添加新用户、删除用户等??这取决于您希望设置的复杂程度,但一般来说,将队列拆分到不同的位置意味着检索任务时的争用更少,但这意味着您无法链接规范