Embedded hasMany not saving
My hasMany relationship doesn't get saved when I use embedded records.
// app/models/schedule.js
import DS from 'ember-data';
export default DS.Model.extend({
interval: DS.attr("number", {defaultValue: 1}),
duties: DS.hasMany('duty', { async: false })
});
// app/serializers/schedule.js
import FirebaseSerializer from 'emberfire/serializers/firebase';
export default FirebaseSerializer.extend({
attrs: {
duties: { embedded: 'always' }
}
});
Then I run in console:
schedule = store.createRecord("schedule");
schedule.get("duties").createRecord();
schedule.save();
Then I get in firebase:
{
"duties" : {
"-K8JihEkTfYlEmIWGlTS" : {
"schedule" : "-K8JidJrYtqLkLDP1k14"
}
},
"schedules" : {
"-K8JidJrYtqLkLDP1k14" : {
"interval": 1
}
}
}
So as can you see, duty record is created and even assigned to the schedule, but schedule record has no duties assigned... Then, when I try to load this schedule in Ember, it also has no duties. Am I doing something wrong?
I use ember 2.1.0, ember-data 2.1.0 and ember-fire 1.6.3.
it looks like you are doing everything correctly. I wonder if it's related to the inverse relationship. Can you remove duty's link back to the interval and see if that fixes it?
Otherwise, I'd like to get a minimal example so I can debug into it.
It works! Great. But to be frank I need this inverse... Is there any workaround for this situation?
Thanks for reporting back. It was a total guess... now I need to work out why this is the case...
can you try the branch in #337 to see if using atomic saves + the ember-data EmbeddedRecordsMixin helps?
Yes, it works! Thanks.
Great, that branch will be EmberFire 2.0. I will make a release this week
@tstirrat Great news if Emberfire 2.0 is coming this week!
@tstirrat release on the way? :)
@hussfelt if you follow the discussion in #337 you'll see that we are not planning to merge it anymore.
There is more discussion on underlying ember-data bugs in #365, too
@tstirrat Sorry, I hijacked this issue just to get info on a new release. :) My bad!
Thanks for a great service!
No problem :smile_cat:
Hi!
I know it is a very old issue, but I'm experiencing the same problem. I tried to do what @jembezmamy did (b/c he said it worked) but in my case it didn't. I'm following the instructions in the guides, and my models are:
// app/models/product.js
import DS from 'ember-data';
import { all } from 'rsvp';
export default DS.Model.extend({
prices: DS.hasMany('price', { async: false, inverse: null }),
});
// app/serializers/product.js
import FirebaseSerializer from 'emberfire/serializers/firebase';
export default FirebaseSerializer.extend({
attrs: {
prices: { embedded: 'always' }
}
});
// app/models/price.js
import DS from 'ember-data';
export default DS.Model.extend({
// product: DS.belongsTo('product', {inverse: 'prices'})
});
Any idea or suggestion?
I use Ember 3.5.1, Ember Data 3.5.2 and EmberFire 2.0.10