什么可能阻止“儿童移除”事件被解雇?

时间:2017-04-04 13:01:04

标签: javascript firebase firebase-realtime-database

考虑以下(简化)代码:

var queueTask = function (taskObject) {
    var deferred = $q.defer();

    // Create new task reference & push new Task object to reference location
    var newTaskRef = firebase.database().ref("task").push(taskObject);

    newTaskRef.once('child_removed', function (snapshot) {
        // SUCCESS
        console.log("@DEBUG - TASK COMPLETE/CHILD REMOVED");
        deferred.resolve(snapshot);
    });

    return deferred.promise;
};

(服务器端工作程序处理任务,将结果写入数据库上的另一个位置,然后删除该对象。)

删除了Task对象,但child-removed事件永远不会触发。

什么可能阻止child-removed事件被解雇?

1 个答案:

答案 0 :(得分:0)

检查安全规则:

如果您的安全规则保留以下默认值,则事件查询将不起作用:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null",
  }
}

此外,如果您的安全规则不允许对写入数据的位置进行读访问(即用户具有写访问权限但不具有读访问权限)事件查询将失败。

事件查询返回已更改数据的快照(在child_removed事件的情况下删除数据),因此需要具有读访问权。