私の研究の一部として、firebaseリアルタイムデータベースで作業するweb-app(javasript言語)を開発する必要があります。はfirebaseのリアルタイムデータベースと正確に同期します
現在データベースには、システムに登録したすべてのユーザーを表すユーザーオブジェクトのツリーがあります。私がやろうとしているのは、単純なユーザログイン機能です。
ユーザーがユーザー名とパスワードを入力した後、データベースからユーザーツリー全体を入力するための配列を作成しました。問題は、Firebaseから関数を呼び出すと、終了するには不十分で、配列が空のままで、ユーザーがシステムに登録されていることを確認できないということです。 今私はsetTimeout関数を使っているImという一時的な解決法を使っていますが、これはプログラミングが間違っていることを理解していますし、システムにログインするたびに2秒待つ必要もありません。
誰かお手伝いできますか?どのようにsetTimeout関数なしでそれを行うには? Firebaseの機能が終了するようにしたいのですが、認証プロセスから始めるだけです。ここで
は、私がこれまでに書いたコードであり、
var correntUser;
var userlist = [];
var usersRef = database.ref('users');
// Query that inserts all users keys and names to an array.
usersRef.orderByChild("username").on("child_added", function(snapshot)
{
userlist.push({userKey:snapshot.key,username:snapshot.val().username,password:snapshot.val().password});
});
setTimeout(function()
{
//check if user exist in userlist.
for(var i=0; i<userlist.length;i++)
if (userlist[i].username == usernameArg && userlist[i].password == passwordArg)
correntUser = userlist[i].userKey;
if(correntUser == undefined)
{
//check if undefined
alert("wrong username or password");
document.getElementById("username").value = "";
document.getElementById("password").value = "";
return;
}
mainPage.addHeader();
},2000);
はあなたのすべてに感謝します。