我有一个使用 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 1.13.11 与 Ember Data 1.13.11 和 EmberFire 1.6.3 一起使用
- 刷新页面或重新加载(使用 'location.reload()' )会导致用户记录按预期显示。
这可能与现在似乎已关闭的 Ember 数据问题有关,将来升级 Ember 数据可能会解决此问题。但是,在此期间我能做些什么来处理这个问题吗?