我的 route 有以下代码:
model(params) {
return this.store.findRecord('user', params.id)
}
以及预期的情况,它要求:
/users/{somethingId}
但是我在外部 api 中的路由是嵌套的,看起来像:
/partners/{somethingId}/users
因此,我需要提出如下请求:
/partners/{somethingId}/users 或 /partners/{somethingId}/users/{userId}
我尝试过 Ember 的人际关系,但没有帮助我。我得到了带有参数的网址:
return this.store.findRecord('partner', params.id, {include:'users'});
// api/partners/5?include=users
我还尝试了方法store.adapterFor
,它在每个请求之前立即更改我的适配器的命名空间:
this.store.adapterFor('application').set('namespace', '/api/partners/' + params.id);
但是在每个请求之前一直做这个事情会很脏,所以我不想这样做。
我知道我可以使用像 ajax-ember 这样的东西,但我想将 DS.store 与适配器一起使用。任何帮助将不胜感激。
最佳答案
您需要为user
模型创建适配器并覆盖urlForFindRecord
应用程序/适配器/user.js
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({
urlForFindRecord(id, modelName, snapshot) {
let baseUrl = this.buildURL();
return `${baseUrl}/partners/${id}/users`;
}
});
关于javascript - 通过 DS.store 方法请求特定的嵌套 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42353582/