2017-05-29 15 views
3

firebaseを使用しています.Javascriptで簡単な関数を書いてSETとUPDATEデータを書きました。FirebaseのSETメソッドが動作していません

function setLastOnline(userID, InOut){ 
    var dbLastonline = firebase.database().ref().child("lastonline"); 
    if (InOut) { 
     dbLastonline.child(userID).set({ 
      "isConnected":true, 
      "connectedby":"web", 
      "lastIn":firebase.database.ServerValue.TIMESTAMP, 
      "lastOut":0 
     }); 
    } else { 
     dbLastonline.child(userID).update({ 
      "isConnected":false, 
      "connectedby":"web", 
      "lastOut":firebase.database.ServerValue.TIMESTAMP 
     }); 
    } 
} 

私はSETメソッドを実行するための関数を呼び出すと、何も起こらない...データベースとなし、エラーコードにデータを...

firebase.auth().onAuthStateChanged(function(user) { 
     if (user) { 
      setLastOnline(user.uid, true); 
     } 
     } 

しかし、私は実行するために、同じ機能を呼び出します更新、すべて正常に動作します。

firebase.auth().onAuthStateChanged(function(user) { 
     if (user) { 
      setLastOnline(user.uid, false); 
      firebase.auth().signOut(); 
     }` 
    }` 

私は間違っていますか?

ありがとうございます。

+0

私はすぐにこのコードの何が問題になるかはわかりません。問題を再現するjsbinを作成できますか? –

+0

** set **の前にプリントを追加して、コードが期待どおりに実行されていることを確認してください。 –

+0

私はすべてをテストしました。コードは必要に応じて実行していますが、データベースに記録していません。そして、今日の私のテストでは、Chromeベースのコンソールで炎ベースのVERBOSEを見つけました。** [違反] www.gstatic.com/firebasejs/3.6.8/firebase.js**の362行目でdocument.write()を使用しないでください。 SETメソッドの実行の瞬間に現れます。 –

答えて

1

エラーが見つかりました。上記の機能は正しく動作します。問題はsetLastOnline()を呼び出した直後にwindow.open()を呼び出したことでした。

firebase.auth().onAuthStateChanged(function(user) { 
     if (user) { 
      setLastOnline(user.uid, true); 
      window.open('another_page.php','_self'); 
     } 
     } 

のでFirebaseの実行が停止し、VERBOSE Chromeのコンソール([違反] www.gstatic.com/firebasejs/3.6.8/firebaseのライン362でのdocument.write()を使用しないでくださいを:このように.js)が表示されます。

よろしくお願いいたします。

+1

良いキャッチ!悪魔は詳細に... ...) –

関連する問題