2016-09-10 3 views
0

子の値がuserStatusの場合、falseからtruefirebaseデータベースに変更されたかどうかを検出する方法を教えてください。子の検出値がfalseからtrueに変更されました

以下は使用しようとしているコードですが、動作しません。 userStatusfalseからtrueに変更された場合、以下の式はもはや真でなく、したがってトリガーされません。

私はこれをどのように達成できるか、誰かがお勧めしますか?

usersRef.orderByChild("userStatus").equalTo(false).on("child_changed", function(snapshot) { 
    var userDetails = snapshot.val(); 
    var firstname  = userDetails.firstName; 
    console.log("userDetails, firstname: "+firstname); 
}); 

[EDIT]

以下は、私がchild_changedイベントをトリガーしようとしています私のfirebaseのDB構造が、ある場合にのみfalseからtrueuserStatus変更。

<code>Firebase db structure</code>

+1

私にはわかりません。 'child_changed'をトリガーしないが、トリガーしたい書き込みシーケンス(コード内)の例を挙げられますか? –

+0

質問をより明確にするために編集を追加しました。 – kurrodu

答えて

2

一つの解決策は、falseuserStatusをユーザーに一致するクエリを使用すると、その後child_removedイベントに耳を傾けることであろう。ユーザーが変更され、そのクエリに一致しなくなったときに通知されます。つまり、userStatusfalseからtrueに変更されたときに通知されます。

usersRef.orderByChild("userStatus") 
    .equalTo(false) 
    .on("child_removed", function (snapshot) { 
    var userDetails = snapshot.val(); 
    var firstname = userDetails.firstName; 
    console.log("userDetails (status changed to true), firstname: " + firstname); 
    }); 
+0

驚くばかり!それだけで動作します。 – kurrodu

+0

おっと...いいです! –

関連する問題