首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Firebase-util解决一对多的关系

使用Firebase-util解决一对多的关系
EN

Stack Overflow用户
提问于 2014-08-26 17:44:51
回答 1查看 1.2K关注 0票数 0

我一直在看https://firebase.github.io/firebase-util/的firebase项目。我不知道这是否可能。

假设我有这样的数据集:

代码语言:javascript
复制
{ clients:
   { client1: { groups: { group1: true, group2: true }, name: 'client1' },
     client2: { groups: { group3: true, group4: true }, name: 'client2' } },
  groups:
   { group1: { name: 'group1' },
     group2: { name: 'group2' },
     group3: { name: 'group3' },
     group4: { name: 'group4' },
     group5: { name: 'group5' } } }

我想检索" client1“并解析与client1相关的所有组,给我一个这样的数据集。

代码语言:javascript
复制
{ client1: { groups: { group1: { name: 'group1' }, group2: { name: 'group2' } }, name: 'client1' }

有什么方法可以用Firebase-util来完成吗?

网站上有一个类似的例子,它将一个帐户连接到一个概要文件,然后将样式映射到另一个参考点。

代码语言:javascript
复制
var ref = Firebase.util.join(
    new Firebase('INSTANCE/account'),
    {
       ref: new Firebase('INSTANCE/profile'),
       keyMap: {
          name: 'name',
          nick: 'nick',
          style: new Firebase('INSTANCE/styles')
       }
    }
);

但是,我不知道怎么用我想要的东西去做。

类似于:

代码语言:javascript
复制
FirebaseUtil.join(
  { ref: new Firebase('INSTANCE/clients/client1'), keyMap: {name: 'name', groups: new Firebase('INSTANCE/groups')} }
)

谢谢你的提示!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-04 16:20:12

不能将嵌套的组列表用作clients/$client/groups的密钥映射。它必须是一个指向一个引用的字符串。

解决方案是为用户分别从元数据中检索列表:

代码语言:javascript
复制
var fb = new Firebase(URL);

getClients(fb.child('clients'), function(userId, data) {
   console.log(userId, data);
});

function getGroupsForClient(clientId, callback) {
   var indexRef = fb.child('clients/'+clientId+'/groups');
   var groupsRef = fb.child('groups');
   var intersectionRef = new Firebase.util.intersection(indexRef, groupsRef);
   intersectionRef.once('value', callback);
}

function getClients(callback) {
   fb.child('clients').on('child_added', function(snap) {
      var userId = snap.name();
      var userData = snap.val();
      getGroupsForClient(userId, function(snap) {
         userData.groups = snap.val();
         callback(userId, userData);
      });
   });
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25512039

复制
相关文章

相似问题

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