在Ember Build之后保存用户对象中断

时间:2016-03-22 05:23:58

标签: ember.js firebase ember-data emberfire

我有一个使用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。

1 个答案:

答案 0 :(得分:0)

好吧......我想我有一个临时修复和潜在的问题推理。执行Ember构建后,执行以下操作:

thisUser.get('respSetSurveyLookup').pushObject(respSetSurveyLookupObj);

respSetSurveyLookup是一个常规数组,它被转换为Ember数组。当你试图保存它时,Firebase会抛出一个错误(它不知道如何处理嵌入式的ember数组)。

以下更改可解决此问题:

thisUser.get('respSetSurveyLookup').pushObject(respSetSurveyLookupObj);
thisUser.set('respSetSurveyLookup', JSON.parse(JSON.stringify(thisUser.get('respSetSurveyLookup'))));