我有一个使用Firebase后端(Emberfire适配器)构建的Ember JS调查应用程序。
以下代码在开发中正常工作:
if(!(_this.currentModel.get('respondents').contains(thisUser)))
{
thisUser.get('surveysToTake').pushObject(_this.currentModel);
_this.currentModel.get('respondents').pushObject(thisUser);
var userResponseSet = _this.store.createRecord('response-set', {
survey: _this.currentModel,
respondentid: thisUser
});
var respSetSurveyLookupObj = {'surveyId': _this.currentModel.get('id'),
'respSetId': userResponseSet.get('id')};
if(thisUser.get('respSetSurveyLookup'))
{
thisUser.get('respSetSurveyLookup').pushObject(respSetSurveyLookupObj);
} else {
thisUser.set('respSetSurveyLookup', [respSetSurveyLookupObj]);
}
thisUser.save().then(function(){
Ember.RSVP.all([_this.currentModel.save(), userResponseSet.save()]).then(function(){
controller.setProperties({ multipleUsers: '', showAddUsers: false});
});
}).catch(function(msg){console.log(msg);});
}
但是我做的那一刻:
ember build -prod
尝试保存用户对象时会抛出错误。抛出错误的具体位置是我尝试添加到respSetSurveyLookup数组时。
不幸的是,由于错误消息是缩小的JS代码,我无法沿着堆栈跟踪工作。
所以我的问题是,什么可能导致用户对象保存仅在完成ember构建时失败?这是Ember CLI(构建版本)引起的问题吗?或者它与Firebase Emberfire适配器有关吗?
其他信息: 我使用的是Ember CLI 1.13.13,Ember 1.13.11和Ember数据1.13.11。
答案 0 :(得分:0)
thisUser.get('respSetSurveyLookup').pushObject(respSetSurveyLookupObj);
respSetSurveyLookup是一个常规数组,它被转换为Ember数组。当你试图保存它时,Firebase会抛出一个错误(它不知道如何处理嵌入式的ember数组)。
以下更改可解决此问题:
thisUser.get('respSetSurveyLookup').pushObject(respSetSurveyLookupObj);
thisUser.set('respSetSurveyLookup', JSON.parse(JSON.stringify(thisUser.get('respSetSurveyLookup'))));