Ember数据端点问题

时间:2014-01-29 22:00:47

标签: ember.js ember-data

使用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中,但是如果可能的话我希望它能够统一工作。

1 个答案:

答案 0 :(得分:0)

我做了一些挖掘,看起来当你向模型添加关系时,有一个名为relationshipsByName的计算属性。在我的示例中,此属性将meta.type属性设置为“User”。它没有关系,因为我用'user'调用了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

的字符串扩展名