我正在使用ember 2.7.0。我从resp API获得了以下数据,
{
"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(型号)
export default DS.Model.extend({
isdn: DS.attr(),
pcc: DS.attr()
});
为所有上述3个模型创建了序列化程序
Customer.js
export default ApplicationSerializer.extend({
normalizeResponse(store, primaryModelClass, payload, id, requestType){
console.log("Entered normalizeResponse",payload );
return this._super(...arguments)
}
});
Device.js
export default ApplicationSerializer.extend({
primaryKey: 'id'
});
user.js的
export default ApplicationSerializer.extend({
primaryKey: 'id'
});
问题是在运行应用程序时我在chrome控制台中遇到以下问题:断言失败:您必须包含' id'对于传递给'推送'
的对象中的客户我不知道如何分配' id'对于客户模型。实际上我想分配用户模型ID作为客户模型是可能的吗?如何在客户模型序列化器中实现?在客户序列化器的normalizeResponse中,我能够看到我的响应。
注意:我无法修改其余的响应。因此修改了余烬数据模型。
我在控制器中调用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)
我不确定您存储数据的位置以及您使用的API类型,但根据我的经验(使用PHP或Loopback api)我已将id变量设置为null(不是必需的)。在数据库方面,我使用了mySQL,并将id字段设置为自动增量。 Ember已经预计了ID,并且不允许您编辑或创建ID