Ember-cli,我如何在休息适配器中改变休息时间

时间:2015-06-10 16:53:55

标签: rest ember.js ember-data ember-cli

我正在使用ember-cli,如何在其余适配器中更改其余的呼叫。如果我使用路径参数不查询参数?例如:

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});

根据用户从下拉列表中选择的内容,我们使用我需要的ID从数据库中获取用户朋友的" id" 你能建议一个更好的方法吗?我的应用程序支持pathparams而不是查询参数

3 个答案:

答案 0 :(得分:1)

要自定义网址,请覆盖适配器中的buildURL method

棘手的部分是从适配器访问相关记录。例如,您为给定用户请求朋友。您使用friend适配器,但需要知道user的ID才能将其包含在网址中。

为此,请使用snapshot方法的buildURL参数上的record property

或者,您可能希望覆盖buildURL的某些基础方法,例如urlForFindQuery,具体取决于您从商店请求模型的方式。使用find.query(),您将从查询中检索用户的ID。

如果这对您没有帮助,请回复您尝试从商店中取友的方式。

答案 1 :(得分:0)

我在enviroment.js'userId'中创建了一个变量。什么时候我选择一个用户 我将控制器中的config.userId设置为相应的Id。

config.userId=this.get('selectedUser');

在适配器的pathforType中,我使用了这个变量

 pathForType: function() {
    return Ember.String.underscore(config.userId+"/friends");
}

你只需要添加一个导入语句

import config from '../config/environment';

如果有人了解更好的方法,请建议我。全心全意感谢您的回复

答案 2 :(得分:0)

buildURL()只接受type imo。所以你必须传递一些爵士乐。

我在应用程序适配器

中执行了以下操作

$ ember生成适配器应用程序

应用程序/适配器/ application.js中

import DS from 'ember-data';

export default DS.RESTAdapter.extend({

    findQuery: function(store, type, query) {

        var urlQuery = query.theshityouwant;

        var reply = this.ajax(this.buildURL(type.typeKey + '/' + urlQuery), 'GET', { headers: all});
        return reply;
    },
})

});