2017-04-17 4 views
0

ember-fireにカスタムセッション変数session.currentUser.isBusinessを追加しようとしています。ただし、ページのリロードでは、データは保持されず消えます。ember-fireで永続化されないカスタムセッションデータ

私はこのようになります私のログインルート内のログインロジックを入れている:

import Ember from ‘ember’; 

export default Ember.Component.extend({ 
classNames: [‘login-form’], 
    router: Ember.inject.service(‘-routing’), 
    actions: { 
    signIn(provider) { 
    let controller = this; 
    this.get(‘session’).open(‘firebase’, { 
     provider: provider, 
     email: this.get(‘email’) || ‘’, 
     password: this.get(‘password’) || ‘’, 
    }).then(() => { 
     this.get(‘session’).set(‘currentUser.isBusiness’, true); 

     controller.get(‘router’).transitionTo(‘business.portal’); 
    }, (error) => { 
     alert(error); 
    }); 
    }, 
    googleSignIn(){ 
    let controller=this; 
      this.get(‘session’).open(‘firebase’, { provider: ‘google’}).then(function(data) { 
      data = null; 
      controller.transitionToRoute(‘portal’); 
      }, (error) => { 
     alert(error); 
    }); 
    } 
} 
}); 

それは私が最初にログインして、私はsession.currentUser.isBusinessがfalseに設定されていることを確認できたときに動作します。ただし、ページがリロードされると、session.currentUser.isBusinessは存在しなくなりました。

私はEmber 2.11とember-fireの最新バージョンを使用しています。

データを確実に変更するにはどうすればよいですか?

答えて

0

Firebaseの内部テーブルにデータを格納しようとしています(実際には、セッションオブジェクトにプロパティを設定するだけです)ことはできません。これをチェックしてくださいanswer

代わりUserモデルを作成することができます

// app/models/user.js 

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    // … 
    isBusiness: DS.attr('boolean') 
}); 

をそして、あなたはすでに署名し、このユーザーを持っているか、新規作成し、このuidを持つユーザーが見つからなかった場合は、すべてのプロパティを設定するかどうかを確認します。

// component 
// … 
this 
    .get('session') 
    .open('firebase', { provider: 'google' }) 
    .then(() => { 
    let uid = this.get('session.currentUser.uid'); 
    this 
     .get('store') 
     .findRecord('user', uid) 
     .then((user) => { 
     if (user) { 
      return console.log(user.get('isBusiness')); // => true 
     } 

     this 
      .get('store') 
      .createRecord('user', { id: uid, isBusiness: true }) 
      .save() 
      .then((newUser) => { 
      console.log(newUser.get('isBusiness')); // => true 
      }); 
     }); 
    }); 

コードは「抽象的」なので、私の意図が理解できるようになります。問題があれば報告してください。

関連する問題