【问题标题】:Embjerjs store.find not working while getJSON isEmbjerjs store.find 在 getJSON 时不起作用
【发布时间】:2015-03-16 16:54:48
【问题描述】:

我开始构建一个 ember 应用程序。我几乎完成了 API,我知道它是有效的。我可以使用 .getJSON 但不能使用 store.find 方法正确显示,而是收到一个未知类型错误,我猜这相当于未正确检索数据。我在 Chrome 中使用 ember 检查器,但我看不到它试图获取 JSON 的位置,我假设它应该是“api/projects”。

谢谢!

window.App = Ember.Application.create();

App.Router.map(function() {
  this.route('projects')
});

App.ApplicationAdapter = DS.RESTAdapter.extend({
  namespace: 'api'
});

App.Projects = DS.Model.extend({
  title: DS.attr('string'),
  description: DS.attr('string')
});

这行得通:

App.ProjectsRoute = Ember.Route.extend({
   model: function(){
     return $.getJSON("api/projects").then(function(data){
       return data.projects;
     });
    }
 });

这不是:

App.ProjectsRoute = Ember.Route.extend({
   model: function(){
     return this.store.find('projects');
    }
 });

错误:

Error while processing route: projects Cannot read property 'typeKey' of undefined TypeError: Cannot read property 'typeKey' of undefined

at DS.RESTAdapter.DS.Adapter.extend.findAll (http://trgmanage.app/js/libs/ember-data.min.js:9:28455)
at Object.Ember.assert (http://trgmanage.app/js/libs/ember-1.10.0.debug.js:3934:27)
at DS.Store.Ember.Object.extend.fetchAll (http://trgmanage.app/js/libs/ember-data.min.js:8:20000)
at DS.Store.Ember.Object.extend.findAll (http://trgmanage.app/js/libs/ember-data.min.js:8:19773)
at DS.Store.Ember.Object.extend.find (http://trgmanage.app/js/libs/ember-data.min.js:8:16174)
at App.ProjectsRoute.Ember.Route.extend.model (http://trgmanage.app/js/app.js:13:23)
at EmberObject.extend.deserialize (http://trgmanage.app/js/libs/ember-1.10.0.debug.js:23915:21)
at applyHook (http://trgmanage.app/js/libs/ember-1.10.0.debug.js:50118:30)
at Object.HandlerInfo.runSharedModelHook (http://trgmanage.app/js/libs/ember-1.10.0.debug.js:48139:22)
at Object.subclass.getModel (http://trgmanage.app/js/libs/ember-1.10.0.debug.js:48365:21)

JSON 响应:(由 Chrome 中的 JSONview 格式化)

{
projects: [
{
id: 1,
title: "this is going",
description: "Aspernatur eum placeat consequuntur. Hic totam molestias nemo. Aut et aut aut earum deserunt impedit. Voluptatum omnis quae est corporis dicta voluptas ut quod. Laboriosam impedit sed eos ut rerum aliquid."
},
{
id: 2,
title: "twinkle1",
description: "Atque nihil ratione dolorem neque odio ex. Facere eaque veritatis incidunt veniam vitae. Culpa voluptatum accusamus voluptate voluptate aut nihil. Sunt adipisci deleniti nihil quia dolorem. Dolor nemo et explicabo minima eos iusto autem. Non qui eveniet rem aliquid et."
},
{
id: 3,
title: "Culpa quibusdam perspiciatis id dolorem consequuntur.",
description: "Ut veritatis nihil ducimus consequuntur nulla. Facilis qui error enim iste soluta dolore. Optio accusamus aliquam dicta. Voluptatem sint dolores quaerat quam ut. Deleniti iste quae molestias amet velit."
}
   ]
}

未格式化的 JSON 响应:

{"projects":[{"id":1,"title":"this is going","description":"Aspernatur eum placeat consequuntur. Hic totam molestias nemo. Aut et aut aut earum deserunt impedit. Voluptatum omnis quae est corporis dicta voluptas ut quod. Laboriosam impedit sed eos ut rerum aliquid."},{"id":2,"title":"twinkle1","description":"Atque nihil ratione dolorem neque odio ex. Facere eaque veritatis incidunt veniam vitae. Culpa voluptatum accusamus voluptate voluptate aut nihil. Sunt adipisci deleniti nihil quia dolorem. Dolor nemo et explicabo minima eos iusto autem. Non qui eveniet rem aliquid et."},{"id":3,"title":"Culpa quibusdam perspiciatis id dolorem consequuntur.","description":"Ut veritatis nihil ducimus consequuntur nulla. Facilis qui error enim iste soluta dolore. Optio accusamus aliquam dicta. Voluptatem sint dolores quaerat quam ut. Deleniti iste quae molestias amet velit."}]}

【问题讨论】:

  • 你能发布你得到的确切错误和堆栈跟踪吗?
  • 你的 Projects 序列化器是什么样的?
  • 我没有,需要吗?我的 json 格式正确
  • Chrome 调试器中的网络选项卡显示所有正在发送的 Ajax 请求。这将是一个很好的起点(至少查看您的请求是否正在发送以及是否在正确的 URL 上发送)。此外,如果您可以向我们提供您的 JSON 有效负载样本,这也会有所帮助(它可能以 Ember Data 不喜欢的方式格式化)。
  • 有趣的是,当使用 store.find 方法时,我没有看到任何网络请求。我只在使用 .getJSON 时看到它

标签: json ember.js ember-data


【解决方案1】:

哎呀。正在使用旧版本的 ember-data beta 6。哎呀。更新到最新的 beta 15 后,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-09
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 2010-11-08
    • 2013-11-27
    相关资源
    最近更新 更多