jeudi 20 août 2015

Handle 404 not found response with Ember and Ember-CLI-Mirage

I'm trying to return different responses in Ember-CLI-Mirage depending on if a record is in the (fake) database. But I keep getting an adapter error when I return a response without a valid JSONAPI response even if I return a 404 response code.

this.get('/users/:id', (db, request) => {
  let user = db.users.find(request.params.id);
  if (user) {
    return jsonapi.serializeOne(user); // works
  } else {
    return new Mirage.Response(404, null, null);
  }
});

This is the route:

import Ember from 'ember';

export default Ember.Route.extend({
  errorRedirectTo: 'users',
  model: function(){
    return this.store.createRecord('user');
  }
});

Error message:

Error while processing route: user Adapter operation failed Error: Adapter operation failed
    at new Error (native)
    at Error.EmberError (http://localhost:4200/assets/vendor.js:26266:21)
    at Error.ember$data$lib$adapters$errors$$AdapterError (http://localhost:4200/assets/vendor.js:126403:50)
    at ember$data$lib$system$adapter$$default.extend.handleResponse (http://localhost:4200/assets/vendor.js:128081:16)
    at ember$data$lib$system$adapter$$default.extend.ajax.Ember.RSVP.Promise.hash.error (http://localhost:4200/assets/vendor.js:128177:33)
    at jQuery.Callbacks.fire (http://localhost:4200/assets/vendor.js:3350:30)
    at Object.jQuery.Callbacks.self.fireWith [as rejectWith] (http://localhost:4200/assets/vendor.js:3462:7)
    at done (http://localhost:4200/assets/vendor.js:9518:14)
    at Object.jQuery.ajaxTransport.send.callback (http://localhost:4200/assets/vendor.js:9920:8)
    at Object._readyStateChange (http://localhost:4200/assets/vendor.js:69915:14)




Aucun commentaire:

Enregistrer un commentaire