Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember cli,如何在rest适配器中动态更改rest调用_Rest_Ember.js_Ember Data_Ember Cli - Fatal编程技术网

Ember cli,如何在rest适配器中动态更改rest调用

Ember cli,如何在rest适配器中动态更改rest调用,rest,ember.js,ember-data,ember-cli,Rest,Ember.js,Ember Data,Ember Cli,我正在使用ember cli,如何在rest适配器中动态更改rest调用。如果我使用路径参数而不是查询参数?例如: export default DS.RESTAdapter.extend({ namespace:'res/v1/users/id', pathForType: function() { return Ember.String.underscore("friends");},}); 根据下拉列表中的用户选择,我们得到“id”,使用该id,我需

我正在使用ember cli,如何在rest适配器中动态更改rest调用。如果我使用路径参数而不是查询参数?例如:

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
根据下拉列表中的用户选择,我们得到“id”,使用该id,我需要从数据库中获得用户朋友。
你能建议一个更好的方法吗。My aa应用程序支持pathparams而不是查询参数要自定义URL,请覆盖适配器中的

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
棘手的部分是从适配器访问相关记录。例如,您为给定用户请求朋友。您在
朋友
适配器中工作,但需要知道
用户
的id才能将其包含在URL中

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
为此,请在
buildURL
方法的
snapshot
参数上使用

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
或者,您可能希望覆盖一些
buildURL
的底层方法,例如,这取决于您从应用商店请求模型的方式。使用
find.query()
,您将从查询中检索用户的id

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

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

我在environment.js“userId”中创建了一个变量。当我选择一个用户时
export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
我将控制器中的config.userId设置为相应的Id

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
config.userId=this.get('selectedUser');
在适配器的pathforType中,我使用了这个变量

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
 pathForType: function() {
    return Ember.String.underscore(config.userId+"/friends");
}
您只需要添加一条导入语句

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
import config from '../config/environment';
如果有人知道更好的方法,请建议我。感谢大家的回复

buildURL()
只接受imo的
类型。因此,您必须通过更多的jazz

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
我在应用程序适配器中执行了以下操作

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
$ember生成适配器应用程序

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

export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});
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;
    },
})

}))

您要调用什么路径从服务器获取朋友
res/v1/users/id/friends
?是的,id在这里是可变的。这取决于我选择的用户,据我所知,没有直接的方法可以做到这一点。关于
嵌套资源api支持的讨论由来已久。如果您管理后端,您可能会发现最好的选择是更改api以避免使用嵌套资源。感谢您的回复。我会看看这是否对我有帮助
export default DS.RESTAdapter.extend({   
  namespace:'res/v1/users/id',   
  pathForType: function() {  
       return Ember.String.underscore("friends");},});