将ember-data与自定义REST端点一起使用

时间:2014-06-24 10:53:21

标签: rest ember.js ember-data

我希望有人告诉我他们是如何使用REST资源的自定义成员或集合操作来解决问题的,例如: PUT /users/:id/confirmPUT /kittens/pet_all

这显然是一项复杂的任务。要正确实现它将是困难的,因为在资源丰富的路由之外,没有假定的服务器的请求/响应类型或结构的合同。尽管如此,假设所有我想做的事情都是pet_all我的小猫,无论结果如何,都必须采取行动,并且必须通过黑客攻击ajax请求。

请想一想小猫......

1 个答案:

答案 0 :(得分:-1)

我过去做过这种方法的一种方法是覆盖适配器中的findQuery方法并将哈希值传递给find方法。这将完全跳过buildURL方法。

例如,如果要获取嵌套在用户资源中的确认集合:

App.UserRoute = Em.Route.extend({
  afterModel: function(model) {
    promise = this.get('store').find('confirmation', userId: model.get('id'))
    this.controllerFor('confirmations').set('model', promise)
  }
});

App.ConfirmationAdapter = DS.RESTAdapter.extend({
  findQuery: function(store, type, query) {
    confirmationsUrl = this.host + '/users/' + query.userId + '/confirmations'
    delete query.userId
    return this.ajax(confirmationsUrl, 'GET', { data: query });
  }
})

这应该让你开始弄清楚如何处理更新。