我尝试使用emberjs中的Restadapter来调用我的api' http://local.ember.api'但我无法获得任何数据。经过一些重复,我没有让它发挥作用。这是我的代码:
我在app / application下创建了一个名为adapter.js的文件,其代码如下:
import DS from 'ember-data';
import $ from 'jquery';
import config from '../config/environment';
var ApplicationAdapter;
ApplicationAdapter = DS.RESTAdapter.extend({
host: 'http://local.ember.api',
namespace: 'api/v1'
});
var ApplicationSerializer;
ApplicationSerializer = DS.RESTSerializer.extend({});
export default ApplicationAdapter;
export default ApplicationSerializer;
在app / models下我有一个带有此代码的user.js:
import Ember from 'ember';
import DS from 'ember-data';
var User = DS.Model.extend({});
export default User;
我的app / router.js看起来像这样:
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('users');
this.route('user', {path: '/user/:user_id'});
});
export default Router;
和我的app / routes / user.js:
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
return this.store.find('user', params.user_id);
}
});
使用此设置我收到此错误:
Error: Assertion Failed: You tried to find a record but your adapter (for test-app@model:user:) does not implement 'findRecord'
当我在名为store.js的app / services下创建一个文件时,此代码为:
import Ember from 'ember';
import DS from 'ember-data';
var Store;
Store = DS.Store.extend({});
export default Store;
我收到此错误:
Error: Assertion Failed: You tried to find a record but your adapter (for test-app@model:user:) does not implement 'findRecord'
当我创建一个名为' findRecord'的函数时在store.js文件中:
Store = DS.Store.extend({
findRecord: function() {}
});
我没有结果。哪里出错了?
答案 0 :(得分:1)
我认为问题在于您在商店中呼叫find
,但根据documentation,您应该调用findRecord
,因为没有find
。因此,错误消息。
当您创建findRecord
方法时,它可能会被调用,但由于您没有返回任何内容......所以您无法获得任何数据。如果您console.log
在那里,可能会被调用。
编辑:
我在ember-data' s source code中找到了该错误发生的行(尽管它来自master)。但是看一下1.13.15的源代码,它应该有find
方法,它应该给你一个warning。
您可以设置一个可以重现问题的EmberTwiddle吗?