1

Ember JS で構築された調査アプリと、Emberfire アダプターを備えた Firebase バックエンドがあります。

私のユーザーモデルの関連部分は次のとおりです。

//app/models/user.js
export default DS.Model.extend({
  name: DS.attr(),
  sessionuid: DS.attr(),
  surveysToTake: DS.hasMany('survey', { async: true, inverse: 'respondents' }),
  surveysCreated: DS.hasMany('survey', { async: true, inverse: 'creator' }), 
  responseSetsSubmitted: DS.hasMany('response-set', {async: true, inverse: 'respondentid'}),
  respSetSurveyLookup: DS.attr({defaultValue: function() { return []; }}) 
});

そして、私のresponseSet(ユーザーからの応答のコレクションです)

//app/models/response-set.js
export default DS.Model.extend({
  responses: DS.hasMany('response', { async: true, inverse: 'responseSet' }),
  survey: DS.belongsTo('survey', { async: true, inverse: 'responseSets' }),
  respondentid: DS.belongsTo('user', {async: true, inverse: 'responseSetsSubmitted'}),
});

調査モデルは次のようになります。

//app/models/survey.js
export default DS.Model.extend({
  title: DS.attr(),
  questions: DS.hasMany('question', { async: true, inverse: 'survey' }),
  respondents: DS.hasMany('user', { async: true, inverse: 'surveysToTake'}),
  responseSets: DS.hasMany('response-set', { async: true, inverse: 'survey' })
});

さて、ユーザーを作成するときは、次のようにします...

//routes/addusers.js (in the actions hook after getting properties from the controller)

var user = store.createRecord('user', {
            id: userData.uid,
            name: name   
          });
var responseSet = store.createRecord('response-set', {
            survey: survey,
            respondentid: user
          });

        user.setProperties({
          'respSetSurveyLookup': [{'surveyId': _this.currentModel.get('id'),
                                  'respSetId': responseSet.get('id')}],
          'surveysToTake': [_this.currentModel]                                        
            });
_this.currentModel.get('respondents').pushObject(user);
Ember.RSVP.all([user.save(), _this.currentModel.save(), responseSet.save()])
   .then(function(){
      controller.setProperties({ multipleUsers: '', showAddUsers: false});
});

ユーザーは期待どおりに追加されます。ただし、私のテンプレート (「ユーザーの追加」セクションと同じルートに表示される) では、同じレコードが複数回表示されます。

追加情報:

  • Ember Data 1.13.11およびEmberFire 1.6.3でEmber 1.13.11を使用しています
  • ページの更新または再読み込み ('location.reload()' を使用) により、ユーザー レコードが期待どおりに表示されます。

これは、現在クローズされているように見える Ember データの問題に関連している可能性があり、 Ember データのアップグレードにより、将来これが解決される可能性があります。ただし、この問題を処理するために、その間に何かできることはありますか?

4

0 に答える 0