我一直在看https://firebase.github.io/firebase-util/的firebase项目。我不知道这是否可能。
假设我有这样的数据集:
{ 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相关的所有组,给我一个这样的数据集。
{ client1: { groups: { group1: { name: 'group1' }, group2: { name: 'group2' } }, name: 'client1' }有什么方法可以用Firebase-util来完成吗?
网站上有一个类似的例子,它将一个帐户连接到一个概要文件,然后将样式映射到另一个参考点。
var ref = Firebase.util.join(
new Firebase('INSTANCE/account'),
{
ref: new Firebase('INSTANCE/profile'),
keyMap: {
name: 'name',
nick: 'nick',
style: new Firebase('INSTANCE/styles')
}
}
);但是,我不知道怎么用我想要的东西去做。
类似于:
FirebaseUtil.join(
{ ref: new Firebase('INSTANCE/clients/client1'), keyMap: {name: 'name', groups: new Firebase('INSTANCE/groups')} }
)谢谢你的提示!
发布于 2014-09-04 16:20:12
不能将嵌套的组列表用作clients/$client/groups的密钥映射。它必须是一个指向一个引用的字符串。
解决方案是为用户分别从元数据中检索列表:
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);
});
});
}https://stackoverflow.com/questions/25512039
复制相似问题