2017-08-28 18 views
1

私はイオンと火災基地で構築しているチャットアプリを持っています。私はチャンネルIDを取得し、現在のユーザーIDをデータベースのメンバーのリストに追加する簡単な結合チャンネル関数を持っています。私が見ているすべてのことによると、正しく動作していますが、firebaseコンソールに行くたびにデータベースに新しい項目が表示されません。ここで私はクロームでデベロッパーコンソールを開き、私が手チャンネルに参加するためにクリックした場合、私は、今...ユーザーはチャットチャンネルに参加すると、データベースに項目を追加する成功した応答であってもfirebaseデータベースが更新されない

joinChannel(type, user_id) { 
    return new Promise((resolve, reject) => { 
     if(this.availableChannels[type] !== undefined) { 
     console.log("joining channel: " + type); 
     console.log('for user: ' + user_id); 
     let update = {}; 
     update['/chat/members/' + type + '/' + user_id] = {active: true, joinedAt: firebase.database.ServerValue.TIMESTAMP}; 
     this.afDB.database.ref().update(update).then(() => { 
      console.log("updated /chat/members/" + type + "/" + user_id + " to"); 
      console.log({active: true, joinedAt: firebase.database.ServerValue.TIMESTAMP}); 
      this.activeChannel = '/channels/' + type; 
      resolve(true); 
     }) 
     } else { 
     reject("channel_not_found"); 
     } 
    }); 
    } 

を使用していたコードですコンソールでこの...

joining channel: news 
chat.ts:210 for user: [USERIDHERE] 
chat.ts:214 updated /chat/members/news/[USERIDHERE] to 
chat.ts:215 Object 
       active: true 
       joinedAt: Object 
       .sv: "timestamp" 
       __proto__: Object 
       __proto__: Object 

だから、コンソールは、私はその後、私のfirebaseコンソールにログインした場合、データベースは、「チャット/メンバー」データベースには、「ニュース」の項目はありませんが、更新を実行したことを示して

。私は別のチャンネルで試してみましたが、いつもfirebaseから同じ正確な応答を得て、データベースを更新しましたが、firebaseコンソールではその項目は空白のままです。

this.afDB変数が必要な場合は、コンストラクタに public afDB: AngularFireDatabaseです。私は物事を更新したり、チャットチャンネルでメッセージを送信したり、firebaseコンソールに表示することができるため、データベースが機能していることは知っていますが、何らかの理由でユーザーがチャンネルに参加するとコンソールログは成功しますが、新しい情報で私は本当にこの1つで失われ、実際にいくつかの助けを使用することができます。

+0

することができます 'はconsole.log(更新)'を呼び出す前に 'アップデート()'更新のセットを使用したい私には思えますか?それが役に立たないと表示されない場合は、jsbinでこれを再現できますか? –

+0

@FrankvanPuffelenここにconsole.log(更新)があります。 オブジェクト{ /チャット/メンバー/ニュース/ TCJOEjaUUaUKt8UJjE0eTL0jYUm1: オブジェクト アクティブ:真 joinedAt:オブジェクト .sv: "タイムスタンプ" __proto __:オブジェクト __proto __:オブジェクト __proto __:オブジェクト 私は方法がわかりません私のfirebaseの鍵などを与えずにjsbinでそれを作り直すことは、うまくいけばこれは公開アプリになるだろうから、私はfirebase接続情報を出したくない。 –

+0

これは問題ないと思います。その場合、私は何がうまくいかないかすぐには見ません。確認できるようにjsbinで再現できますか? –

答えて

0

あなたの代わりに

this.afDB.database.ref('/chat/members/' + type + '/' + user_id) 
 
.set({active: true, joinedAt: firebase.database.ServerValue.TIMESTAMP});

+0

どちらも同じように動作するはずです。 –

+0

私はセットを使ってみましたが、どちらもしていませんでした。 –

関連する問題