2016-08-13 4 views
0

に渡されたオブジェクト内の顧客のための「ID」を含める必要がありました、次のRESPのAPIからのデータを、お客様のためのモデルを作成しましエンバーあなたは、私が燃えさし2.7.0.Iを使用しています「プッシュ」

{ 
"accounts": [ 
{ 
    "id": "57a3660793d4ba3a5b78a780", 
    "status": null, 
    "crid": "Someone", 
    "deleted": false, 
    "accountInfo": { 
    "iccid": "accountId", 
    "iccidValue": "accountValue" 
    }, 
    "subscriptionInfo": null 
}, 
{ 
    "id": "57a3660793d4ba3a5b78a780", 
    "status": null, 
    "crid": "Someone", 
    "deleted": false, 
    "accountInfo": { 
    "iccid": "accountId", 
    "iccidValue": "accountValue" 
    }, 
    "subscriptionInfo": null 
} 
], 
"user": { 
"id": "288607702394", 
"isdn": "491622897075", 
"pcc": null 
} 
} 

ました

Customer.js(モデル)

export default DS.Model.extend({ 
    device:DS.hasMany('device'), 
    user:DS.belongsTo('user') 
}); 

accounts.js(モデル):すべてのアカウント、ユーザーなどの詳細が含まれています

status: DS.attr(), 
id: DS.attr(), 
status: DS.attr(), 
crid: DS.attr(), 
deleted: DS.attr(), 
accountInfo: DS.attr(), 
subscriptionInfo: DS.attr() 

user.jsの全上記3モデルの(モデル)

export default DS.Model.extend({ 
isdn: DS.attr(), 
pcc: DS.attr() 
}); 

作成シリアライザ

Customer.js

export default ApplicationSerializer.extend({ 
normalizeResponse(store, primaryModelClass, payload, id, requestType){ 
console.log("Entered normalizeResponse",payload); 
return this._super(...arguments) 
} 
}); 

デベロッパーice.js私はクロームコンソールで次の問題を取得していたアプリケーションの実行中に問題がある

export default ApplicationSerializer.extend({ 
    primaryKey: 'id' 
}); 

user.jsの

export default ApplicationSerializer.extend({ 
primaryKey: 'id' 
}); 

アサーションは失敗しました:あなたは、 'ID' を含める必要があります'プッシュ'に渡されたオブジェクト内の顧客のため

私は顧客モデルに「id」を割り当てる方法がわかりません。実際には、ユーザーモデルIDをカスタムとして割り当てたいと思いますそれは可能ですか?どのように顧客モデルシリアライザでそれを達成することができますか?顧客シリアライザのnormalizeResponseで私は私の応答を見ることができます。

注:残りのレスポンスを変更することはできません。オプションは、emberデータモデルの変更が残っています。

私はREST APIが私のコントローラでGET呼び出しています方法は、それは常にエラー応答に入った

var customer = this.store.findRecord('customer', this.get('customerID')).then((customer) => { 
    console.log("customer::",customer); 
    },(resp,status) => { 
    console.log("resp:status:",resp,status); 
    }); 

です。

あなたの助けが必要です。

+0

お客様の質問に記載されているペイロードの部分はどこにありますか? –

+0

@EbrahimPasbani私たちはペイロードに顧客部分を持っていませんが、ユーザーオブジェクトIDがemberで可能なのでプライマリキーを持つ顧客オブジェクトとしてコンテンツ全体を保存したいのですか?申し訳ありません私はまったく新しいですember私が間違っている場合私を修正してください – VelNaga

+0

@EbrahimPasbaniあなたはこのjsonのためにどのようなemberモデルを提案しますか? – VelNaga

答えて

0

あなたのデータを格納する場所と使用しているAPIのタイプはわかりませんが、私の経験では(PHPやLoopbackのAPIを使用しています)、私はnull(必須ではありません)にできるid変数を設定しました。データベース側では、mySQLを使用して、idフィールドを自動インクリメントに設定しました。 EmberはすでにIDを期待しており、IDの編集や作成を許可していません。

関連する問題