Javascript 使用Ember和Ember CLI Mirage处理404找不到响应
我试图在Ember CLI Mirage中返回不同的响应,具体取决于(假)数据库中是否有记录。但当我返回一个没有有效JSONAPI响应的响应时,即使返回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
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——我相信返回错误描述(在响应正文中)是可选的。