在firebase中
var userRef = http://xx.firebaseio.com/users
我可以让所有用户都喜欢
var userAllRecords = $ firebase(userRef)。$ asObject();
这将给我所有记录,我可以过滤它们并获得欲望值/操作。
但是,当我只对一组记录感兴趣时,如果用户在所有用户之间进行平衡和命名,我怎么能在处理移动设备应用程序时特别避免这些额外操作?
所以我看起来像在asObject()方法中传递对象名称。例如,只从所有用户获取user_balance和user_name
例如:var userAllRecords = $ firebase(userRef)。$ asObject(user_balance,user_name);
我找不到符合此处的任何内容:https://www.firebase.com/docs/web/api/
答案 0 :(得分:4)
您无法以您希望的方式获取节点集合的子集。 Firebase始终检索/同步完整节点。
要解决此问题,您必须规范化数据结构。您有大约三种选择:
userids
和“加入”的节点(使用once
)balances
节点balances
节点下所以如果你现在有这个结构:
users
userid1
user_name: "Frank van Puffelen"
user_balance: 15281
userid2
user_name: "star18bit"
user_balance: 1178
数据结构变为:
userids
userid1
userid2
users
userid1
user_name: "Frank van Puffelen"
user_balance: 15281
userid2
user_name: "star18bit"
user_balance: 1178
然后代码如下:
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();
}
};
数据结构变为:
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(balances).on('child_added', function(snapshot) {
var userid = snapshot.name();
var balance = snapshot.val();
};
你可以从中找出方法3。