以我有限的理解和 SQL 背景,我不太了解 hasChild() 和 forEach(); 的用法。他们觉得他们属于参考而不是快照。
(我将在余下的讨论中使用 hasChild(),但这些概念是可以互换的。)
这是我的推理:
- 我有一个需要用户表的 Firebase 路径,比如说
appname/users
- 我想查看用户(Fred)是否存在
- 我得到一个参考:
var users = new Firebase('appname/users')
但我无法确定这里是否有孩子。所以这就是我现在所拥有的:
users.child('Fred').once('value', function(snapshot) {
/** waits around forever if Fred doesn't exist */
});
但这并不完全奏效。因此,现在我必须通过以下方式获取用户的价值(感觉有点违反直觉,因为我对用户不感兴趣):
var users = new Firebase('http://.../appname/users');
users.once('value', function(snapshot) {
snapshot.childExists('Fred', function(exists) {
/* do something here*/
});
});
根据文档,我不认为通过 fetching 会产生很大的开销appname/users
,但是如果我只想确定键“Fred”是否存在,这感觉就像是一段难看的代码。
我想看到类似的东西:
var users = new Firebase('http://.../appname/users');
users.hasChild('Fred', function(exists[, snapshotOfFred]) {
/* do something here*/
});
有没有更好的方法来使用 forEach/hasChild?我在这里错过了任何重要的逻辑考虑吗?