2016-07-22 4 views
0

私はChrome拡張機能をテストしており、Google認証ユーザーからFirebaseにデータをプッシュしています。set()を使用してFirebaseがオブジェクト全体を追加しない

私は別のJSファイルから来ているメッセージを聞いています。入ってくると、 "visitedLinks"というプロパティに "user profile"オブジェクト(request)とタックを入れたいと思っています。 visitedLinksは空のオブジェクトに設定する必要があります。

私は3つのconsole.logをコード全体で実行しますが、console.logsは "visitedLinks"を空のオブジェクトに設定していますが、Firebaseにプッシュすると "visitedLinks"はプロパティではありません。

//Relevant 3 console statements are the following 
//console.log('request.accountData = ', request.accountData) 
//console.log('userObject test #1 = ', userObject) 
//console.log('userObject = ', userObject) 

var rootRef = new Firebase("https://search-feed-35574.firebaseio.com/"); 

if (localStorage.userIsAuthenticated) { 
    console.log('user is authenticaled') 
    chrome.runtime.onMessage.addListener(
     //listen for messages 
     function(request, sender, sendResponse) { 
      //url is coming in from a content script, use localStorage.uid to make database call 
      if (request.url) { 
       console.log('message coming from content script') 
       var uid = localStorage.uid; 
       var url = request.url; 
       var userRef = rootRef.child(uid); 
       newLinkRef = userRef.push(url); 
       //otherwise, we're getting a message from popup.js, meaning they clicked it again, or they've signed in for the first time 
      } else { 
       console.log('message coming from popup') 
       //here we're passing in all the data from the person's Google user account 
       var googleUID = request.accountData.uid 
        //then we make a new object with the key as their google UID and the value all the account data 
       request.accountData.visitedLinks = {} 
       console.log('request.accountData = ', request.accountData) 
       var userObject = {}; 
       userObject[googleUID] = request.accountData; 
       console.log('userObject test #1 = ', userObject) 
       //here were checking to see if the UID is already a key in the database 
       //basically, if they've ever logged in 
       rootRef.once('value', function(snapshot) { 
        if (snapshot.hasChild(googleUID)) { 
         //user has authenticated before, they just happened to click the popup again 
         console.log('already authenticated, you just clicked the popup again') 
        } else { 
         console.log('users first DB entry'); 
         //if they're not in the database yet, we need to push userObject to the DB 
         //and push their current url to the publicLinks array 
         rootRef.set(userObject, function(error) { 
          console.log('error = ', error); 
          console.log('userObject after DB insert = ', userObject) 
         }); 
        } 
       }) 
      } 

      //figure out if this user has entries in the DB already 
      //just push the link information onto the "links" node of the db object 
      //if not, push a ref (to the right place) 
      // console.log(sender) 
     }); 
} else { 
    console.log('user isnt authenticated') 
} 

答えて

関連する問題