2017-04-17 3 views
0

ember-fire에서 사용자 정의 세션 변수 session.currentUser.isBusiness을 추가하려고합니다. 그러나 페이지를 다시로드 할 때 데이터가 지속되고 사라지지 않습니다.ember-fire에서 사용자 세션 데이터가 지속되지 않음

I는 다음과 같습니다 내 로그인 경로 내에서 로그인 로직을 넣어 해요 :

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 
      }); 
     }); 
    }); 

코드는 "추상적"이므로 내 뜻을 알 수 있습니다. 문제가 있으면 알려주십시오.