0

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

4

1 回答 1

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'))));
于 2016-03-22T09:27:08.440 回答