- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
由于我的理解和 SQL 背景有限,我不太了解 hasChild() 和 forEach() 的用法;他们感觉自己属于引用而不是快照。
(我将在其余讨论中使用 hasChild(),但这些概念是可以互换的。)
这是我的推理:
appname/users
var users = new Firebase('appname/users')
但我无法确定这里是否存在 child 。这就是我现在所拥有的:
users.child('Fred').once('value', function(snapshot) {
/** waits around forever if Fred doesn't exist */
});
但这并不完全有效。所以现在我必须通过这样的方法来获取用户的值(value)(这感觉有点违反直觉,因为我对用户不感兴趣):
var users = new Firebase('http://.../appname/users');
users.once('value', function(snapshot) {
snapshot.childExists('Fred', function(exists) {
/* do something here*/
});
});
根据文档,我不认为通过获取 appname/users
会产生很大的开销,但如果我只想确定键是否为 '弗雷德存在。
我希望看到类似的内容:
var users = new Firebase('http://.../appname/users');
users.hasChild('Fred', function(exists[, snapshotOfFred]) {
/* do something here*/
});
是否有更好的方法来使用 forEach/hasChild?我在这里错过了任何重要的逻辑考虑吗?
最佳答案
您的第一个代码片段实际上走在正确的轨道上。 .once() 将通过快照触发您的回调,无论 Fred 是否已经存在。所以你可以这样做:
users.child('Fred').once('value', function(snapshot) {
if (snapshot.val() === null) {
/* There is no user 'Fred'! */
} else {
/* User 'Fred' exists.
}
});
您的第二个代码段实际上会产生很大的开销,因为 Firebase 会从 Firebase 获取整个“用户”位置,如果您有 1000 个用户,这可能会非常大!所以第一个代码片段绝对是正确的选择。
hasChild 和 forEach 位于 DataSnapshot 上而不是 Firebase 上的原因是它们可以同步。在我们早期的 API 测试中,我们在 Firebase 引用中混合使用了同步和异步方法,但我们发现这对人们来说是一个重要的绊脚石(如果人们看到 hasChild 方法,他们会期望它返回一个 bool 值)立即地)。因此,我们创建了 .on() 和 .once() 作为 Firebase 上唯一的异步回调方法。 Firebase 引用上的所有其他内容都是同步的(尽管我们有时提供可选的异步完成回调),并且 DataSnapshot 上的所有内容都是 100% 同步。
因此,我们的目标是让 Firebase 的异步特性更易于人们理解和使用!但也许我们还没有100%成功。 :-) 在规划 future 的 API 调整时,我们会考虑您的反馈。谢谢!
关于firebase - 正确使用 Firebase 中的引用文献中的 hasChild() 和 forEach() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11420650/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我对描述 PHP 内部工作原理、陷阱和一些高级功能的文献(互联网上的文章、杂志、书籍、播客 - 我真的不介意任何东西)很感兴趣。那里有这样的东西吗?我试着在谷歌上搜索,但大多数文章都是关于从 PHP
我知道这个问题的答案是否可能是主观的,(而且我还没有找到类似的问题)但我的问题如下: 我在互联网/文献上看到过不同来源的代码片段,其中一个来 self 项目中的队友。通常他们中的一些人会采用类似...
我是一名优秀的程序员,十分优秀!