2016-03-22 10 views
0

私はFirebaseバックエンド(Emberfireアダプター)で構築されたEmber JS調査アプリケーションを持っています。Emberビルド後のユーザーオブジェクトブレークの保存

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 CLI(ビルドを行う)に起因する問題ですか?それとも、Firebase Emberfireアダプターと関係がありますか?

追加情報: Ember CLI 1.13.13、Ember 1.13.11、Emberデータ1.13.11を使用しています。

+0

@Piyushカトリ...ありがとう:

次の変更は、問題を解決するために表示されます。 SOの岩! – learningMachine

+0

あなたの貯蓄パンチが配列アイテムの場合は、Ember.RSVP.all([this.currentModel、userResponseSet] .invoke( 'save'))のように接近することができます。 –

+0

@kristjanreinholdありがとう。それはきちんとしている。 – learningMachine

答えて

0

大丈夫...私は一時的な修正と問題の潜在的な推論があると思います。あなたはエンバービルドを行い、その後、次の手順を実行した後:通常の配列は、エンバーの配列に変換されますです

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

respSetSurveyLookup。これを保存しようとすると、Firebaseはエラーをスローします(エンベデッドember配列の処理方法はわかりません)。それをインデントすることにより、より多くの読み取り可能なコードを作成するための

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

this.set( 'x'、x.toArray()); –

+0

ありがとう@kristjanreinhold ... 'x.toArray()'は機能しません。しかし... Array.fromメソッドは、可能な代替可能性がありますか? - https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/from – learningMachine

+0

もしそうなら、はい。私は主に関数の引数=> Array.from(引数) –

関連する問題