为什么ember-data嵌入式关联总是发送一个ajax请求?

时间:2012-09-26 13:21:04

标签: ember.js ember-data

我正在尝试使用Ember-Data和提供的RESTAdapter来加载这样的对象:

{
  "videos":[
   {
    "id":"5062f3c30959c6c732000005",
    "tags":[
          {"_id":"5062f3cb0959c6c732000006","name":"hello"},
          {"_id":"5062f3cb0959c6c732000007","name":" world"}
    ]
   }
  ]
}

这里我有一个有很多标签的视频对象。 tags属性声明为embedded:

Video = DS.Model.extend {
 tags: DS.hasMany('Tag', {embedded: true})
}

Tag = DS.Model.extend {
 video: DS.belongsTo('Video')
}

当我尝试使用

加载视频时
Video.find()

adpter总是尝试在/tags向我的服务器发送一个get请求,这自然会失败,因为我的服务器没有直接访问标签。相反,标签已嵌入/videos.json。

那么embedded: true在余烬数据关联中的含义是什么?

1 个答案:

答案 0 :(得分:3)

我隐约相信发生的事情是它不信任嵌入式tags没有id参数。尝试给Tag id: DS.attr('string', { key: '_id' })

顺便说一下,embedded在您的示例中拼写错误 - 您的应用中是否正确?

更新:也许更好的建议是在primaryKey: '_id'内设置Tag。 (doc