首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用firebase,angularFire获取非正态化数据

用firebase,angularFire获取非正态化数据
EN

Stack Overflow用户
提问于 2015-02-19 04:23:34
回答 2查看 1K关注 0票数 1

我试图获取属于某个用户的所有花卉数据,在本例中是simplelogin:69。

我首先从用户获取所有的花键,如下所示:

代码语言:javascript
复制
/users/simplelogin:69/flowers/

var ref = new Firebase("https://URL.firebaseio.com/users/"+uid+"/flowers");
var sync = $firebase(ref);

现在,我坚持用一种干净的方法从simplelogin循环每个花键来获取所有的花数据:69没有循环每个键/花/(例如,下面我只有三个花键,但是在生产中我可能有10k)。

我试过FirebaseIndex和firebase-util,但无法使它正常工作。有人有什么建议吗?我在这里看过以前的文章,但是大多数看起来都过时了,或者不太适合我想要的东西。能用AngularFire解决的任何事情。

你好,伊莱亚斯

代码语言:javascript
复制
{
  "flowers" : {
    "-JiU57sFAfQwYtIq-LCl" : {
      "image" : "test",
      "name" : "test",
      "type" : "Roses",
      "uid" : "simplelogin:69"
    },
    "-JiU9-3ajlnFLpyUmBvL" : {
      "image" : "dasdasd",
      "name" : "sadasdas",
      "type" : "Roses",
      "uid" : "simplelogin:69"
    },
    "-JiUF-mioK3jQCYy6ZiG" : {
      "image" : "ss",
      "name" : "ss",
      "type" : "Lilies",
      "uid" : "simplelogin:69"
    }
  },
  "users" : {
    "simplelogin:69" : {
      "flowers" : {
        "-JiU57sFAfQwYtIq-LCl" : true,
        "-JiU9-3ajlnFLpyUmBvL" : true,
        "-JiUF-mioK3jQCYy6ZiG" : true
      }
    },
    "simplelogin:70" : {

    },
    "simplelogin:71" : {

    }
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-20 00:13:34

由于@Kato在线程上的回答:火基数据标准化。如何获取基于此结构的集合? (在创建这个线程之前尝试了它,但没有让它工作,所以做了一些小的修改,现在它可以工作了)。

将解决方案发布给在相同情况下结结巴巴的人:

代码语言:javascript
复制
$scope.flowers = {};

var flowerRef = new Firebase('https://URL.firebaseio.com/flowers/');
var keyRef = new Firebase('https://URL.firebaseio.com/users/'+checkAuth.auth.uid+'/flowers');

keyRef.on('child_added', function(snap) {
    var flowerId = snap.key();
    flowerRef.child(flowerId).on('value', function(snap) {
        $timeout(function() {
           if( snap.val() === null ) {
              delete $scope.flowers[flowerId];
           }
           else {
              $scope.flowers[flowerId] = snap.val();
           }
        });
    });
});

keyRef.on('child_removed', function(snap) {
    var flowerId = snap.key();
    $timeout(function(snap) {
        delete $scope.flowers[flowerId];
    });
});
票数 5
EN

Stack Overflow用户

发布于 2015-02-19 20:18:05

这对Firebase来说确实是个棘手的问题。如果您为用户的花卉列表实现了一个自定义工厂对象,则可以在列表更改时动态请求新的花卉数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28598563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档