【问题标题】:Ember Data Endpoint IssueEmber 数据端点问题
【发布时间】:2014-01-29 22:00:47
【问题描述】:

我在使用 ember 数据时遇到了一个奇怪的问题。使用以下用户模型,一切都很好。

App.User= DS.Model.extend({
    firstName: attr(),
    lastName: attr()
});

我调用 user.save() 并使用正确的数据发布到 /users。但是,当我尝试使用与之有关系的用户模型时

App.User= DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string'),
    friends: DS.hasMany('user'),
    followers: DS.hasMany('user'),
});

由于某种原因,当我调用 user.save() 时,该模型会发布到 /Users (注意大写。此外,在响应中它期望它格式化为 {"User": {...}} 而不是 { “用户”:{...}}

以前有人遇到过这种情况吗?我总是可以将额外的端点添加到我的 api 中,但是如果可能的话,我希望它能够统一工作。

【问题讨论】:

  • 我没有看到这个 Rob,你能更新我的 jsbin 来复制吗? emberjs.jsbin.com/OxIDiVU/151/edit
  • 我发现了 kingpin2k 的问题。请看我下面的解释。感谢您设置 jsbin。

标签: ember.js ember-data


【解决方案1】:

我做了更多的挖掘工作,似乎当您向模型添加关系时,有一个名为 RelationsByName 的计算属性。在我的示例中,此属性会将 meta.type 属性设置为“用户”。它可以在没有关系的情况下工作,因为我用“用户”调用了 createRecord 方法,所以我假设它使用它作为类型。添加关系时,它使用“用户”

我发现 modelFor 调用解析器对键进行规范化。所以解决方案是添加一个自定义解析器,如下所示。

App = Ember.Application.create({
     Resolver: Ember.DefaultResolver.extend({
         normalize: function(fullName) {
           var n = this._super(fullName);
           if(fullName.startsWith('model')){
               n = n.replaceAt(6, n[6].toLowerCase());
            }
            return n;
           }
      })
}); 

*注意我有startsWith和replaceAt的字符串扩展

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多