Angularjs 如何从firebase中的所有子位置获取特定对象值
在火基Angularjs 如何从firebase中的所有子位置获取特定对象值,angularjs,firebase,Angularjs,Firebase,在火基 var userRef = http://xx.firebaseio.com/users 我可以让所有的用户都喜欢 var userAllRecords=$firebase(userRef)。$asObject() 这将给我所有的记录,我可以过滤它们,得到期望值/操作 但是,当我只对一组记录感兴趣时,比如说用户余额和所有用户的姓名,我怎么能避免这些额外的操作呢 所以我看起来像是在asObject()方法中传递对象名。e、 g仅从所有用户处获取用户余额和用户名 e、 g:var user
var userRef = http://xx.firebaseio.com/users
我可以让所有的用户都喜欢
var userAllRecords=$firebase(userRef)。$asObject()
这将给我所有的记录,我可以过滤它们,得到期望值/操作
但是,当我只对一组记录感兴趣时,比如说用户余额和所有用户的姓名,我怎么能避免这些额外的操作呢
所以我看起来像是在asObject()方法中传递对象名。e、 g仅从所有用户处获取用户余额和用户名
e、 g:var userAllRecords=$firebase(userRef)。$asObject(用户余额,用户名)
我在这里找不到任何匹配项:您无法以您想要的方式获取节点集合的子集。Firebase始终检索/同步完整节点 要解决这个问题,您必须规范化数据结构。您大致有三种选择:
用户名和余额中的“join”的节点(使用一次)
balances
节点中余额节点中
users
userid1
user_name: "Frank van Puffelen"
user_balance: 15281
userid2
user_name: "star18bit"
user_balance: 1178
方法1:保留用户ID索引
数据结构变为:
userids
userid1
userid2
users
userid1
user_name: "Frank van Puffelen"
user_balance: 15281
userid2
user_name: "star18bit"
user_balance: 1178
balances
userid1: 15281
userid2: 1178
users
userid1
user_name: "Frank van Puffelen"
userid2
user_name: "star18bit"
然后代码是这样的:
var root = new Firebase(FB_URL);
new root.child('userids').on('child_added', function(useridsnapshot) {
var userid = useridsnapshot.name();
root.child('users/'+userid+'/user_balance').once('value', function(balancesnapshot) {
// TODO: do something with balancesnapshot.value();
}
};
var root = new Firebase(FB_URL);
new root.child(balances).on('child_added', function(snapshot) {
var userid = snapshot.name();
var balance = snapshot.val();
};
方法2:在全球范围内保持平衡
数据结构变为:
userids
userid1
userid2
users
userid1
user_name: "Frank van Puffelen"
user_balance: 15281
userid2
user_name: "star18bit"
user_balance: 1178
balances
userid1: 15281
userid2: 1178
users
userid1
user_name: "Frank van Puffelen"
userid2
user_name: "star18bit"
然后代码是这样的:
var root = new Firebase(FB_URL);
new root.child('userids').on('child_added', function(useridsnapshot) {
var userid = useridsnapshot.name();
root.child('users/'+userid+'/user_balance').once('value', function(balancesnapshot) {
// TODO: do something with balancesnapshot.value();
}
};
var root = new Firebase(FB_URL);
new root.child(balances).on('child_added', function(snapshot) {
var userid = snapshot.name();
var balance = snapshot.val();
};
您可能可以从中找出方法3。您无法以您想要的方式获得节点集合的子集。Firebase始终检索/同步完整节点 要解决这个问题,您必须规范化数据结构。您大致有三种选择:
用户名和余额中的“join”的节点(使用一次)
balances
节点中余额节点中
users
userid1
user_name: "Frank van Puffelen"
user_balance: 15281
userid2
user_name: "star18bit"
user_balance: 1178
方法1:保留用户ID索引
数据结构变为:
userids
userid1
userid2
users
userid1
user_name: "Frank van Puffelen"
user_balance: 15281
userid2
user_name: "star18bit"
user_balance: 1178
balances
userid1: 15281
userid2: 1178
users
userid1
user_name: "Frank van Puffelen"
userid2
user_name: "star18bit"
然后代码是这样的:
var root = new Firebase(FB_URL);
new root.child('userids').on('child_added', function(useridsnapshot) {
var userid = useridsnapshot.name();
root.child('users/'+userid+'/user_balance').once('value', function(balancesnapshot) {
// TODO: do something with balancesnapshot.value();
}
};
var root = new Firebase(FB_URL);
new root.child(balances).on('child_added', function(snapshot) {
var userid = snapshot.name();
var balance = snapshot.val();
};
方法2:在全球范围内保持平衡
数据结构变为:
userids
userid1
userid2
users
userid1
user_name: "Frank van Puffelen"
user_balance: 15281
userid2
user_name: "star18bit"
user_balance: 1178
balances
userid1: 15281
userid2: 1178
users
userid1
user_name: "Frank van Puffelen"
userid2
user_name: "star18bit"
然后代码是这样的:
var root = new Firebase(FB_URL);
new root.child('userids').on('child_added', function(useridsnapshot) {
var userid = useridsnapshot.name();
root.child('users/'+userid+'/user_balance').once('value', function(balancesnapshot) {
// TODO: do something with balancesnapshot.value();
}
};
var root = new Firebase(FB_URL);
new root.child(balances).on('child_added', function(snapshot) {
var userid = snapshot.name();
var balance = snapshot.val();
};
您可能可以从中找到方法3。我认为firebase刚刚添加了一种正确的方法,通过为每个表/子表添加规则“indexOn”来从所有子级获取特定对象,是的,从我目前看到的情况来看,它看起来相当不错。但请记住,该功能处于测试阶段,因此可能仍会更改。而且你应该总是喜欢一个符合你需要的好的数据结构。我认为firebase刚刚添加了一种正确的方法,通过为每个表/子表添加规则“indexOn”来从所有子表获取特定对象。是的,从我到目前为止看到的情况来看,它看起来相当不错。但请记住,该功能处于测试阶段,因此可能仍会更改。而且您应该始终选择符合您需要的良好数据结构。firebase刚刚宣布了通过在每个表中添加规则“indexOn”来从所有子级获取特定对象的正确方法/child firebase.com/docs/beta/queriesfirebase刚刚宣布了通过在每个表中添加规则“indexOn”来从所有子级获取特定对象的正确方法表/child firebase.com/docs/beta/querys