【发布时间】:2016-02-09 11:24:19
【问题描述】:
我是一个全新的 Firebase 用户,正在尝试构建一个简单的应用程序 - 我遇到了一个奇怪的问题,我无法找到解决方案。
这就是我正在做的事情。
我有一个简单的 Firebase 用户数据库,看起来像这样:
{
"users": {
"randomlyAssignedId": {
"phoneNumber": "+18882223333"
}
}
}
我的想法是为每个使用我的服务的用户创建一个用户对象(每个用户对象只包含一个phoneNumber 字段)。
我已经将它存储在 Firebase 中并且已经开始工作了。
现在,事情变得棘手了。我想编写一个查询,通过他们的phoneNumber 返回用户。因此,在阅读了 Firebase 文档后,我想到了以下内容:
var Firebase = require('firebase');
var users = new Firebase('https://demo.firebaseio.com/users');
users.orderByChild('phoneNumber').equalTo('+18882223333').limitToFirst(1).once('value', function(snapshot) {
console.log('API call succeeded:', snapshot.val());
}, function(err) {
console.log('Firebase returned an error:' err);
});
当我运行此代码示例时,用户对象已成功登录到控制台(它找到了匹配项,是的!),但是——回调永远不会结束。
根据 .once() 的 Firebase 文档:https://www.firebase.com/docs/web/api/query/once.html 成功(或错误回调)应该只触发一次。
这似乎没有发生:(
谁能告诉我这是期望的行为,还是我做错了什么?
谢谢!
【问题讨论】:
-
你说“回调永远不会结束”是什么意思?我很确定回调会在记录后退出,所以可能还有其他你期望发生的事情,但事实并非如此。
-
如果你在命令行上运行我有的示例应用程序(使用 Node),你会看到在
console.log语句触发后,脚本没有结束——它一直坐着在那里无限期地监听事件。 -
嗯,好的。这确实更清楚。这是预期行为,请参阅stackoverflow.com/questions/18046639/…
-
啊,这回答了我的问题。如果您将其发布为答案,我会接受=)
-
我标记为重复,因为它是……重复。 :-)
标签: javascript node.js firebase