【问题标题】:Reading Firebase data is returning client error despite rule being "true"尽管规则为“真”,但读取 Firebase 数据仍返回客户端错误
【发布时间】:2015-05-25 02:18:47
【问题描述】:

我想弄清楚如何用 angular + firebase 做一个简单的 CRUD。我从读取操作开始。我有以下数据结构:

鉴于此,我创建了以下规则:

我有一个工作工厂如下:

factory('wordsFactory', function($http){
  var factory = {};
  var words = [
    {content:"hi", definition:"ooo"},
    {content:"h3", definition:"ooo222"}
  ];
  factory.getWords = function(){
    return words;
    //ajax call here
  };
  factory.addWords = function(){
    //something
  }
  return factory;
})

我对其进行了修改以尝试像这样包含调用:

factory('wordsFactory', function($http){
  var factory = {};
  var words = [];
  var ref = new Firebase('https://my-firebase.firebaseio.com/words');
    ref.once('value', function($scope, snapshot) {
        $scope.variable = snapshot.val();
        words = [
          {content: ref.content, definition: ref.definition}
        ];
  });
  factory.getWords = function(){
    return words;
    //ajax call here
  };
  factory.addWords = function(){
    //something
  }
  return factory;
})

但是,每当我尝试阅读时,我都会得到:

Error: permission_denied: Client doesn't have permission to access the desired data.

FIREBASE WARNING: Exception was thrown by user callback. TypeError: Cannot read property 'val' of undefined

很多事情,我意识到由于我拥有它的方式,即使它有效,它也只会返回 1 个值。我现在可以接受,因为我只是想弄清楚如何让它工作。我也知道我当前的数据结构可以大大改进,我再次这样做只是为了学习,但请随时提出您认为可能对我有帮助的任何建议。

我现在主要担心的是我无法阅读它。我还应该提到,工厂在没有 firebase 的情况下也能正常工作,它在主控制器中被调用。

【问题讨论】:

    标签: angularjs firebase rest-firebase


    【解决方案1】:

    我认为您的问题与规则有关。

    尝试将默认规则替换为以下内容:

    {
      "rules": {    
         ".read": true,
         ".write": true
      }
    }
    

    现在您可以正常访问了。

    【讨论】:

      【解决方案2】:

      我不确定你是怎么想到这个结构的:

      ref.once('value', function($scope, snapshot) {
      

      但是once 回调只为value 事件使用一个参数。见the relevant Firebase API documentation

      所以你必须把它改成:

      ref.once('value', function(snapshot) {
      

      并找到另一种方法来获取范围。

      为了对失败的读取操作进行故障排除,我建议使用 Firebase 信息中心中的模拟器选项卡。它通常会更好地解释操作被拒绝的原因。这些详细信息故意不显示在常规客户端中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-28
        相关资源
        最近更新 更多