Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.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

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
Javascript 如何在Ember REST适配器中的挂钩内获取动态段id_Javascript_Ember.js_Ember Data_Adapter - Fatal编程技术网

Javascript 如何在Ember REST适配器中的挂钩内获取动态段id

Javascript 如何在Ember REST适配器中的挂钩内获取动态段id,javascript,ember.js,ember-data,adapter,Javascript,Ember.js,Ember Data,Adapter,假设我们有类似于/posts/awesome post/comments(即/posts/1/comments即/posts/:post\u id/comments)的URL 我们有评论适配器 export default DS.RESTAdapter.extend({ pathForType(modelName) { // how to get :post_id here? } }); 如何在注释适配器中的pathForTypehook中获取Awesome Post的id(:

假设我们有类似于
/posts/awesome post/comments
(即
/posts/1/comments
/posts/:post\u id/comments
)的URL

我们有评论适配器

export default DS.RESTAdapter.extend({
  pathForType(modelName) {
    // how to get :post_id here?
  }
});
如何在注释适配器中的
pathForType
hook中获取Awesome Post的id(:Post_id)?

您可能希望在这种情况下使用。因此,在适配器中,重写如下方法:

export default DS.RESTAdapter.extend({
    buildURL(modelName, id, snapshot, requestType, query) {
        const postId = query.postId;

        if (postId) {
            // Make your own URL
        } else {
            return this._super.apply(this, arguments);
        }
    }
});
this.store.find('comment', { postId: id });
然后您可以获取如下注释:

export default DS.RESTAdapter.extend({
    buildURL(modelName, id, snapshot, requestType, query) {
        const postId = query.postId;

        if (postId) {
            // Make your own URL
        } else {
            return this._super.apply(this, arguments);
        }
    }
});
this.store.find('comment', { postId: id });

你不能。(或者至少你可以这样做,但我强烈建议你不要这样做。)你介意详细说明一下你的用例吗?可能有更好的方法来完成您试图完成的任务。@GJK我有非常非标准的API,所以我使用适配器和序列化程序将JSON API转换为Ember REST适配器所期望的格式。为了检索特定帖子的评论,我需要调用
/comments
,而不是
post\u id/comments
。谢谢
modelName、id、snapshot、requestType、query
向我提供
注释null findAll undefined
您使用的是什么版本的成员数据?调试:Ember:2.3.0调试:Ember数据:v2.3.0这两个
null
s是有意义的。您是否正在将对象传递到
存储区。查找
调用?此外,该方法可能被多次调用,因此请确保您正在调试该方法的正确调用。该方法只被调用一次。我没有向store.find传递任何对象,只传递以下内容:
model(){返回此.modelFor('post').get('comments');}