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');}