ember.js - 覆盖 buildURL 方法以包含父模型的 id

标签 ember.js ember-data adapter

关于 ember-data 和子类化 DS.RESTAdapter 以覆盖 buildURL .

我有两个端点。可以说它们是:

example.com/users/user-id
example.com/users/user-id/images

将“user-id”替换为实际的用户 ID。

所以我有两个模型:
App.User = DS.Model.extend
    images: DS.hasMany 'image',
        async: true
        inverse: 'user'

App.Image = DS.Model.extend
    user: DS.belongsTo 'user',
        async: true
        inverse: 'images'

但是,来自 /users/user-id 的有效负载端点不返回图像 ID。我无法控制这个(它是第三方 api)。

因此,我需要向/users/user-id/images 发出单独的请求。我将 DS.RESTAdapter 子类化以指定 url:
App.ImageAdapter = DS.RESTAdapter.extend
    buildURL: (type, id) ->
        # need to return "/users/user-id/images"
        # but need to get the value of user-id somehow

从路由中,我什至如何将用户 ID 传递给商店,以便它可以调用 buildURL带有用户 ID 的自定义适配器中的方法?
App.UserRoute = Em.Route.extend
    afterModel: (model) ->
        # how to provide value of `model.get 'id'` to store/adapter/buildURL?
        # do I even do that here?
        promise = @get('store').find 'image'
        @controllerFor('images').set 'model', promise

我想我可以提供一个哈希到 find并跳过buildURL共。但是findQuery是私有(private)方法。有没有更优选的方法来做到这一点?
App.UserRoute = Em.Route.extend
    afterModel: (model) ->
        promise = @get('store').find 'image', userId: model.get 'id'
        @controllerFor('images').set 'model', promise

App.ImageAdapter = DS.RESTAdapter.extend
    findQuery: (store, type, query) ->
        imagesURL = "#{@host}/users/#{query.userId}/images"
        delete query.userId
        @ajax(imageURL, 'GET', { data: query });

最佳答案

覆盖 findQuery 绝对没有错,这是能够扩展适配器的乐趣的一部分。我们不得不做同样的事情(我们的休息端点真的很令人兴奋)。

关于ember.js - 覆盖 buildURL 方法以包含父模型的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21964155/

相关文章:

ember.js - New Router API 中的路由和资源有什么区别?

javascript - Ember Data 从存储中抓取已加载的对象

ember.js - 获取错误 : You need to pass a model name to the store's modelFor method

javascript - Ember.js 设置 Controller 属性表单组件

android - 嵌套的 recyclerview 在前几次滚动然后平滑滚动时滞后?

ember.js - Ember - 链接 block 内的操作

ember.js - Ember-CLI - 如何访问应用程序类

java - GOF 中提到的可插拔适配器

c++ - 我可以编写一个接受原始指针和智能指针的 C++ 仿函数吗?

Javascript,Ember 2,如何重构此 promise 代码(也许还可以使用 async/await)