When trying to push a newly created object to a parent in a has many relationship, I run in an error:
Assertion failed: The content property of DS.PromiseArray should be set before modifying it
Here is my code.
App.User = DS.Model.extend({
name : DS.attr('string'),
selections : DS.hasMany('selection', {async: true}),
creationDate : DS.attr('date')
});
App.Selection = DS.Model.extend({
value : DS.attr('string')
});
App.PollController = Ember.ObjectController.extend({
actions: {
save: function(){
// create new user record in store
var newUser = this.store.createRecord('user', {
name : this.get('newUserName'),
creationDate : new Date()
});
// create new selection record in store
var newSelection = this.store.createRecord('selection', {
id : 11,
value : "hallo"
});
// push selection to user
newUser.get('selections').pushObject(newSelection);
// save new user
newUser.save();
}
}
});
Error accourse when I am trying to push the newSelection object to selections Array of user model.
Also tried to change the line to
// push selection to user
newUser.get('selections').then(function(selections){
selections.pushObject(newSelection);
});
Then I do not get an error but newSelection is not pushed to user. Selections array of user stays empty.
What I am doing wrong? Am I on totally wrong way? Or is there a bug in EmberJs / Ember Data?
I am using EmberJS 1.2.0 and Ember Data beta 5.
I assume you're saying the save isn't sending back the selections, cause your code for adding is correct.
It's important to note that promises happen asynchronously
newUser.get('selections').then(function(selections){
// this will happen after save
selections.pushObject(newSelection);
});
newUser.save();
You should wait to save until the selection is pushed
http://emberjs.jsbin.com/gotasa/1/edit?html,js,output
newUser.get('selections').then(function(selections){
selections.pushObject(newSelection);
newUser.save();
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With