使用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中,但是如果可能的话我希望它能够统一工作。
答案 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
的字符串扩展名