I have been confused about Ember-Data Embedded records past few days any help or explanation would be appriciated i have two models
user.js
export default DS.Model.extend({
docType:DS.attr('string'),
firstName:DS.attr('string'),
role:DS.attr('string'),
userName:DS.attr('string'),
password:DS.attr('string'),
lastName:DS.attr('string'),
mobileNo:DS.attr('string'),
landNo:DS.attr('string'),
nicNo:DS.attr('string'),
permissionList:DS.hasMany('userpermission',{embedded:'always'})
});
and
userPermission.js
export default DS.Model.extend({
permissionName:DS.attr('string'),
permissionId:DS.attr('string'),
view:DS.attr('boolean',{defaultValue: true}),
create:DS.attr('boolean',{defaultValue: true}),
update:DS.attr('boolean',{defaultValue: true}),
deleteRec:DS.attr('boolean',{defaultValue: true})
});
application Serializer
export default DS.RESTSerializer.extend({
primaryKey: '_id',
});
post serializer
import DS from 'ember-data';
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
permissionList: { serialize: 'ids', deserialize: 'ids',embedded:'always' },
}
});
and in my controller i use
var permission = this.store.createRecord('userpermission');
this.user.get('userPermissions').pushObject(permission);
to push permissions to user and
this.user.save()
to save the user
i can successfully save a user. and it is saved in following format
{"user":[{"_id":"563b4287ed5e33e3149e9415","created_at":"2015-11-05T11:50:31.146Z","docType":null,"firstName":"Sameera","role":null,"userName":"sam","password":"1234","lastName":"Wickramasekara","mobileNo":"1212","landNo":"121","nicNo":"12121","__v":0,"permissionList":[{"permissionName":"permission1","permissionId":"1","view":true,"create":false,"update":false,"deleteRec":false},{"permissionName":"permission3","permissionId":"3","view":true,"create":false,"update":true,"deleteRec":false}]}
the problem arises when i try to get users to the Ember application following error occurs
Error while processing route: userlist.main Assertion Failed: You must include an `id` for userpermission in an object passed to `push` Error: Assertion Failed: You must include an `id` for userpermission in an object passed to `push`
at new Error (native)
at Error.EmberError (http://localhost:4200/assets/vendor.js:26452:21)
at Object._emberMetalCore.default.assert (http://localhost:4200/assets/vendor.js:15896:13)
at ember$data$lib$system$store$$Service.extend.push (http://localhost:4200/assets/vendor.js:83099:17)
at http://localhost:4200/assets/vendor.js:85377:17
at Array.forEach (native)
at Ember.Mixin.create._extractEmbeddedHasMany (http://localhost:4200/assets/vendor.js:85375:68)
at null.<anonymous> (http://localhost:4200/assets/vendor.js:85340:22)
at http://localhost:4200/assets/vendor.js:86410:20
at cb (http://localhost:4200/assets/vendor.js:28210:11)
FYI i use node as backend and mongo as the database;
all i want to do is save and retrive user recorords with permissions as embedded where am i going wrong? can you point to any resource about correctly using Ember-data that has embedded records without ids. please mind any mistake because im not experienced javascript programmer. thanks.
Aucun commentaire:
Enregistrer un commentaire