Javascript Ember.js错误:对象照片没有方法';每个阈值类型';

Javascript Ember.js错误:对象照片没有方法';每个阈值类型';,javascript,model-view-controller,ember.js,ember-data,Javascript,Model View Controller,Ember.js,Ember Data,我试图创建一些路线,从我的模型中过滤出批准和不批准的照片(基于布尔值) 以下是我的主要照片,已批准和未批准路线: # router.js App.Router.map -> @resource "photos", -> @resource "photo", path: ":photo_id" # additional child routes @route "approved" @route "disapproved" # photo

我试图创建一些路线,从我的模型中过滤出批准和不批准的照片(基于布尔值)

以下是我的主要
照片
已批准
未批准
路线:

# router.js
App.Router.map ->
  @resource "photos", ->
    @resource "photo",
      path: ":photo_id"
    # additional child routes
    @route "approved"
    @route "disapproved"

# photos_routes.js
App.PhotosRoute = Ember.Route.extend(
  model: ->
    App.Photo.find()
)

App.PhotosApprovedRoute = Ember.Route.extend(
  model: ->
    @store.filter "Photo", {approved: true}, (photo) ->
      photo.get("approved")
  renderTemplate: ->
    @render "photos"
    @render controller: "PhotosController"
)

App.PhotosDisapprovedRoute = Ember.Route.extend(
  model: ->
    @store.filter "Photo", {approved: false}, (photo) ->
      not photo.get("approved")
  renderTemplate: ->
    @render "photos"
    @render controller: "PhotosController"
)
这是我的
photo.js
模型:

App.Photo = DS.Model.extend(
  name: DS.attr("string")
  description: DS.attr("string")
  image_url: DS.attr("string")
  approved: DS.attr("boolean")
)
最后,我的
应用程序.hbs
照片.hbs
模板:

{{!-- application.hbs --}}
<header id="header">
  <h2>{{#link-to "index"}}Home{{/link-to}}</h2>

  <nav>
    <ul>
      <li>{{#link-to "photos"}}All photos{{/link-to}}</li>
      <li>{{#link-to "photos.approved"}}Approved{{/link-to}}</li>
      <li>{{#link-to "photos.disapproved"}}Disapproved{{/link-to}}</li>
    </ul>
  </nav>
</header>

<div id="content">
  {{outlet}}
</div>

{{!-- photos.hbs --}}
<h1>Photos</h1>

<ul>
  {{#each controller}}
    <li class="masonry-brick">
      <img {{bind-attr src=image_url}} alt="Logo">
    </li>
  {{else}}
    <li>There are no photos.</li>
  {{/each}}
</ul>

{{outlet}}
完整堆栈跟踪:

TypeError: Object Photo has no method 'eachRelatedType'
    at DS.JSONSerializer.DS.Serializer.extend.configureSideloadMappingForType (http://localhost:3000/assets/ember-data.js?body=1:7798:10)
    at DS.JSONSerializer.DS.Serializer.extend.sideload (http://localhost:3000/assets/ember-data.js?body=1:7768:10)
    at DS.JSONSerializer.DS.Serializer.extend.extractMany (http://localhost:3000/assets/ember-data.js?body=1:7692:10)
    at superWrapper [as extractMany] (http://localhost:3000/assets/ember.js?body=1:1240:16)
    at DS.Adapter.Ember.Object.extend.didFindQuery (http://localhost:3000/assets/ember-data.js?body=1:8329:29)
    at http://localhost:3000/assets/ember-data.js?body=1:9912:15
    at invokeCallback (http://localhost:3000/assets/ember.js?body=1:9754:19)
    at publish (http://localhost:3000/assets/ember.js?body=1:9424:9)
    at Promise.publishFulfillment (http://localhost:3000/assets/ember.js?body=1:9844:7)
    at Object.DeferredActionQueues.flush (http://localhost:3000/assets/ember.js?body=1:5894:24)
    at Object.Backburner.end (http://localhost:3000/assets/ember.js?body=1:5985:27) ember.js?body=1:3462
Uncaught Error: Assertion Failed: TypeError: Object Photo has no method 'eachRelatedType' ember.js?body=1:74
Ember.assert ember.js?body=1:74
Ember.RSVP.onerrorDefault ember.js?body=1:16899
__exports__.default.trigger ember.js?body=1:8718
Promise._onerror ember.js?body=1:9442
publishRejection ember.js?body=1:9849
DeferredActionQueues.flush ember.js?body=1:5894
Backburner.end ember.js?body=1:5985
Backburner.run ember.js?body=1:6024
Ember.run ember.js?body=1:6427
hash.success ember-data.js?body=1:10004
fire jquery.js?body=1:3049
self.fireWith jquery.js?body=1:3161
done jquery.js?body=1:8236
callback

对不起,我不应该在评论中回答。堆栈跟踪发生在自定义序列化程序中。您可能应该发布该代码,因为这就是错误所在

但考虑到错误,以及
每个hrelatedType
是静态方法而不是实例方法的事实,很可能是在实例上调用它。调用
photo.eachRelatedType()
而不是
photo.constructor.eachRelatedType()
App.photo.eachRelatedType()

编辑:似乎您没有自定义序列化程序。但是余烬数据从不调用每个hrelatedType,它只定义它。您使用的是什么版本的余烬数据


EDIT2:似乎通过从Ember Data 0.14升级解决了这个特殊问题。虽然目前还不知道确切的原因。(可能是余烬数据错误。)

您可以共享网络请求-响应正文吗?问题似乎出在你收到的数据上是的,这是一个奇怪的问题,因为任何对这个错误的搜索都不会返回任何相关信息。我的余烬数据是
版本:v0.14
,这就是原因<代码>0.14非常旧(6个月)。有没有可能升级到最新的测试版?如果不是的话,我想你必须复制这是一个JSBin,我们才能真正帮助你。我非常熟悉余烬数据的内部工作,但没有任何版本那么旧。啊,这是问题之一。我现在已经升级并硬刷新,但是
/approved
/unapproved
路线现在显示所有照片。这与上面的
renderTemplate
函数有关吗?我认为这与您的渲染函数有关。调用render两次,第二次调用控制器。也许可以尝试使用这里列出的函数:我已经将此函数标记为完整,因为我们解决了原始问题。我们将在一个单独的问题上发布这个新问题,并将在这里链接到它。如果你能快速看一下就好了。
TypeError: Object Photo has no method 'eachRelatedType'
    at DS.JSONSerializer.DS.Serializer.extend.configureSideloadMappingForType (http://localhost:3000/assets/ember-data.js?body=1:7798:10)
    at DS.JSONSerializer.DS.Serializer.extend.sideload (http://localhost:3000/assets/ember-data.js?body=1:7768:10)
    at DS.JSONSerializer.DS.Serializer.extend.extractMany (http://localhost:3000/assets/ember-data.js?body=1:7692:10)
    at superWrapper [as extractMany] (http://localhost:3000/assets/ember.js?body=1:1240:16)
    at DS.Adapter.Ember.Object.extend.didFindQuery (http://localhost:3000/assets/ember-data.js?body=1:8329:29)
    at http://localhost:3000/assets/ember-data.js?body=1:9912:15
    at invokeCallback (http://localhost:3000/assets/ember.js?body=1:9754:19)
    at publish (http://localhost:3000/assets/ember.js?body=1:9424:9)
    at Promise.publishFulfillment (http://localhost:3000/assets/ember.js?body=1:9844:7)
    at Object.DeferredActionQueues.flush (http://localhost:3000/assets/ember.js?body=1:5894:24)
    at Object.Backburner.end (http://localhost:3000/assets/ember.js?body=1:5985:27) ember.js?body=1:3462
Uncaught Error: Assertion Failed: TypeError: Object Photo has no method 'eachRelatedType' ember.js?body=1:74
Ember.assert ember.js?body=1:74
Ember.RSVP.onerrorDefault ember.js?body=1:16899
__exports__.default.trigger ember.js?body=1:8718
Promise._onerror ember.js?body=1:9442
publishRejection ember.js?body=1:9849
DeferredActionQueues.flush ember.js?body=1:5894
Backburner.end ember.js?body=1:5985
Backburner.run ember.js?body=1:6024
Ember.run ember.js?body=1:6427
hash.success ember-data.js?body=1:10004
fire jquery.js?body=1:3049
self.fireWith jquery.js?body=1:3161
done jquery.js?body=1:8236
callback