emberjs findRecord未实现

时间:2015-11-20 08:32:06

标签: javascript ember.js ember-data

我尝试使用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() {}
});

我没有结果。哪里出错了?

1 个答案:

答案 0 :(得分:1)

我认为问题在于您在商店中呼叫find,但根据documentation,您应该调用findRecord,因为没有find。因此,错误消息。

当您创建findRecord方法时,它可能会被调用,但由于您没有返回任何内容......所以您无法获得任何数据。如果您console.log在那里,可能会被调用。

编辑: 我在ember-data' s source code中找到了该错误发生的行(尽管它来自master)。但是看一下1.13.15的源代码,它应该有find方法,它应该给你一个warning

您可以设置一个可以重现问题的EmberTwiddle吗?