Javascript 使用Ember和Ember CLI Mirage处理404找不到响应

Javascript 使用Ember和Ember CLI Mirage处理404找不到响应,javascript,ember.js,ember-cli-mirage,Javascript,Ember.js,Ember Cli Mirage,我试图在Ember CLI Mirage中返回不同的响应,具体取决于(假)数据库中是否有记录。但当我返回一个没有有效JSONAPI响应的响应时,即使返回404响应代码,也会不断收到适配器错误 this.get('/users/:id', (db, request) => { let user = db.users.find(request.params.id); if (user) { return jsonapi.serializeOne(user); // works

我试图在Ember CLI Mirage中返回不同的响应,具体取决于(假)数据库中是否有记录。但当我返回一个没有有效JSONAPI响应的响应时,即使返回404响应代码,也会不断收到适配器错误

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);
  }
});
这是路线:

import Ember from 'ember';

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

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)

无论如何,你必须在你的路线上赶上,对吗?只要这样做,并处理错误。它可能涉及头和
errors
键,类似于
returnnewmirage.Response(404,{“Content Type”:“application/json”},{errors:[]})但即使这样对我来说也是错误的。谢谢@SamSelikoff,我试着使用catch并设置响应类型,但仍然得到相同的错误。我很难找到关于正确的JSONAPI响应应该是什么的权威来源,JSONAPI.org只是声明如果无法找到任何请求的资源,应该使用响应代码404-我相信返回错误描述(在响应正文中)是可选的。无论如何,你必须在你的路线上赶上
,对吗?只要这样做,并处理错误。它可能涉及头和
errors
键,类似于
returnnewmirage.Response(404,{“Content Type”:“application/json”},{errors:[]})但即使这样对我来说也是错误的。谢谢@SamSelikoff,我试着使用catch并设置响应类型,但仍然得到相同的错误。我很难找到关于正确的JSONAPI响应应该是什么的权威来源,JSONAPI.org只是声明如果找不到任何请求的资源,应该使用响应代码404——我相信返回错误描述(在响应正文中)是可选的。