javascript - Ember Data not creating an id for new instances -
i created prototype of ember app using local storage adapter.
i trying convert app use ember data rest adapter back-end store.
in local storage version of app, ember generates id new record prior saving (and if record never saved).
for example, in local storage app, can log id in both places
var gecko = this.store.createrecord('gecko', { date: new date(), type: "gecko", }); console.log(gecko.id, "gecko.id before save"); gecko.save(); console.log(gecko.id, "gecko.id"); by contrast, in version of app i'm making rest adapter back-end store, id not logged.
when check data ember sending server, id not included (probably because id never generated).
here json ember sending server
gecko: { type: "alloc", date: "2015-05-30t13:28:27.539z"} i assuming supposed save id ember generates on server (which of course allow retrieve record id provide server implements that).
question: why there no id being generated?
this code
app = ember.application.create(); app.router.map(function() { this.route("gecko", { path: "/" }); }); app.applicationadapter = ds.restadapter.extend({ //haven't created code part yet }); app.applicationstore = ds.store.extend({ adapter: app.applicationadapter.create() }); app.gecko = ds.model.extend({ type: ds.attr('string'), date: ds.attr('date') }) app.geckoroute = ember.route.extend({ model: function() { //currently nothing. tried `return this.store.find('gecko') since there no records yet on backend, it's returning null leads error array cannot map on }, }); app.geckocontroller = ember.controller.extend({ actions: { creategeckobuttonclicked: function(){ var gecko = this.store.createrecord('gecko', { date: new date(), type: "gecko", }); console.log(gecko.id, "gecko.id before save"); //null gecko.save(); console.log(gecko.id, "gecko.id"); //null } } note—i'm not sure if it's relevant, feel i'm in chicken/egg situation route because can't return entries before have created them.
so therefore, i'm trying setup ember app able post entry server, implement route retrieve using return this.store.find('gecko').
when use restadapter , save model, ember-data expects valid payload includes unique id generated backend.
var gecko = this.store.createrecord('gecko', { date: new date(), type: "gecko", }); /* here ember-data expects payload this: gecko: {id: 1, date: "", type: "gecko"} id generated backend */ gecko.save().then(function(gecko){ console.log(gecko.get('id')) })
Comments
Post a Comment