【发布时间】:2015-01-10 19:24:46
【问题描述】:
我正在使用 Firebase 检索用户的一些数据。我需要使用“gameSearching: true”检索只有一个用户。
我现在得到了以下代码:
var ref = new Firebase("https://grootproject.firebaseio.com/Users");
ref.orderByChild("gameSearching").equalTo(true).limitToFirst(1).on("child_added", function (data) {
var yourself = firebase.getAuth().password.email.split("@", 1)[0];
var opponent = data.key();
setData(('Users/' + opponent + '/'), {gameSearching: false});
setData(('Users/' + yourself + '/'), {gameSearching: false});
console.log(opponent);
});
当我运行此代码时,该函数将运行两次。
我正在使用limitToFirst(1),所以我希望只检索一个用户。
我做错了什么?
【问题讨论】:
-
如果您希望处理程序只执行一次,请使用
.once('child_added'。如果您不这样做,它就会变成一个过滤后的 view,并且该视图中的数据可能会随着时间的推移而更新。发生这种情况时,Firebase 还会触发child_removed事件,因此任何时候都只有一个孩子在视图中。
标签: javascript json firebase