2014-10-01 119 views
1

我有兩個異步模式:灰燼集只有一個元素,而不是許多

App.Posts = DS.Model.extend({ 
    'content': attr('string'), 
    'comments': DS.hasMany('comments', {async: true}), 
}); 

App.Comments = DS.Model.extend({ 
    'body': DS.attr('string'), 
    'postId': DS.belongsTo('posts', {async: true}) 
}); 

經由PostController中我試圖通過一個動作的onClick加載評論:

App.PostController = Ember.ArrayController.extend({ 
    loadComments: function(post_id) { 
     this.store.find('comments', post_id); 
    } 
}); 

(或許還有)

請求和API響應正確(請參閱下面的API響應),但只顯示一條評論,然後Ember拋出一個錯誤:

TypeError: Cannot read property 'postId' of undefined 

在餘燼控制檯>數據選項卡中,註釋模型中有一個註釋,但註釋模型中也有一個註釋元素,註釋屬性設置爲undefined。這可以解釋爲什麼Ember無法讀取屬性postId,因爲它不是註釋。爲什麼Ember將帖子推入評論模型,並且只將一個而不是3個評論推入模型中?

API響應

{ 
    "comments": [ 
     { 
      "id": 2, 
      "postId": 31152, 
      "body": "Lorem ipsum dolor sit amet, consetetur", 
     }, 
     { 
      "id": 2, 
      "postId": 31152, 
      "body": "asdasd", 
     }, 
     { 
      "id": 2, 
      "postId": 31152, 
      "body": "asd asd sd", 
     } 
    ] 
} 
+0

你可以顯示你的路由器。如果您的評論嵌套在帖子資源中,您必須在您的控制器中指定。 – Stakoov 2014-10-03 12:26:59

回答

0

這是一個在黑暗中拍攝輕微,我一般會把它作爲一個評論,但它是大的一點點。你能否嘗試將所有的模型引用改爲單數。這是Ember Data模型的正確模式。

App.Post = DS.Model.extend({ 
    'content': attr('string'), 
    'comments': DS.hasMany('comment', {async: true}), 
}); 

App.Comment = DS.Model.extend({ 
    'body': DS.attr('string'), 
    'postId': DS.belongsTo('post', {async: true}) 
}); 

this.store.find('comment', post_id); 

現在我寫這個,我可能會看到另一個問題。如果您是通過post_id查詢評論(假設它是7),那麼Ember Data期待返回單個記錄,而不是一組記錄。所以很可能看看評論集合,並認爲它是一個單一的記錄,這只是吹拂它的邏輯。

+0

是的,最後單數莫爾斯是線索,但也查詢意見: this.store.find('comment',{postId:post_id}); ,因爲使用普通參數Ember期望單個對象作爲響應。通過查詢(「{postId:post_id}」)Ember等待一個數組。 – 2014-10-01 21:46:22

相關問題