【问题标题】:Ember-data resolves wrong API endpointEmber-data 解析错误的 API 端点
【发布时间】:2013-11-14 17:26:50
【问题描述】:

我在使用 Ember 数据获取 Ember.js 以访问嵌套资源 API 端点时遇到问题。这是我的代码:

https://gist.github.com/feliksg/7470254

这是我正在使用的:

DEBUG: ------------------------------- ember.js:3224
DEBUG: Ember      : 1.2.0-beta.3 ember.js:3224
DEBUG: Ember Data : 1.0.0-beta.2 ember.js:3224
DEBUG: Handlebars : 1.0.0 ember.js:3224
DEBUG: jQuery     : 2.0.3 ember.js:3224
DEBUG: -------------------------------

I'm also using Ember Appkit as the base for this project.

基本上问题是当我尝试提交新帖子时,ember 数据会执行以下操作:

对 /user/posts 的 POST 请求

而不是一个

对 /users/1/posts 的 POST 请求

此外,由于某种原因,chrome 检查器显示的请求负载显示正在传递给 API 的表单数据如下所示:

{ "user/post": { "published":false, "created_at":null, "user":"1" } }

但是,我希望数据是这样传入的:

{"post": { "body":"some text...", "published":false, "created_at":null, "user_id":"1" } }

因此,出于某种原因,即使我在表单中有它,它也不会传入“body”字段。

非常感谢任何帮助!




更新 1

当我访问http://localhost:8000/#/users/1/posts 时,它会向/users.json 发送一个GET API 请求。我设置 PostsRou​​te 的方式一定有问题,但我不确定如何解决。




更新 2

我更新了我的 PostsRou​​te 以获取 JSON,而不使用返回记录的 Ember Data,但现在帖子模板不呈现。我的 PostsRou​​te 现在看起来像这样:

PostsRoute = Ember.Route.extend
  model: (params) ->
    user = @modelFor('user')
    userId = user.get('id')
    return $.getJSON('http://localhost:5000/api/v1/users/' + userId + '/posts.json')

我也收到以下错误:

加载路由时出错:TypeError: Object # has no method 'slice'

【问题讨论】:

    标签: javascript ember.js ember-data ember-app-kit


    【解决方案1】:

    因此,当您创建/使用“用户/帖子”时,您定义的是帖子所在的命名空间,而不是它位于特定模型下。 AKA,它不会使用关联的用户模型来构建您的 url,它只会使用用户作为帖子的一部分发出请求。

    我不完全肯定为什么身体没有附在柱子上,你确定模型包括身体吗?您确定要发送到 createRecord 的模型上存在 body 属性吗?

    顺便说一句,需求对路由没有任何作用,它只适用于控制器。

    【讨论】:

    • 我不确定你的意思,但这里是 PostsCreate 路线:gist.github.com/feliksg/7470254#file-posts_create_route-js
    • 是的,我检查了我的 Post 模型 (gist.github.com/feliksg/7470254#file-post-js) 上有一个 body 属性。另外,我删除了路线上的需求。
    • 对不起,我应该更具体一点,在 this.get('model') 创建记录时,newPost.createRecord('user/post', this.get('model'));
    • 所以我只是尝试提交一个新帖子并做了一个 console.log(this.get('model'));输出:类{toString:函数,willDestroy:函数,_oldWillDestroy:函数,created_at:2013年11月14日星期四13:57:37 GMT-0500(EST),构造函数:函数......} ember1384455451199:“ember669”__ember1384455451199_meta: Meta _super:未定义已发布:真实正文:“测试” created_at:2013 年 11 月 14 日星期四 13:57:37 GMT-0500 (EST) toString: function () { return ret; } willDestroy: function superWrapper() { __proto: Object
    • 只是为了尝试,如果您尝试将 hasMany 和 createRecord 从 'user/post' 更改为 'post' 会发生什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 2016-05-23
    相关资源
    最近更新 更多