Javascript 在Ember中,我如何才能找到像store.query这样的调用将命中的确切URL?
当调试我的API时,我想知道,对于给定的代码行Javascript 在Ember中,我如何才能找到像store.query这样的调用将命中的确切URL?,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,当调试我的API时,我想知道,对于给定的代码行 store.query('foo', {filter: ...}) 这到底是什么URL导致余烬击中。目前,为了找到答案,我只需打开devtools并在network选项卡中查找请求 这并不理想,因为: 如果有很多相关的网络请求,则很难找到它们 我必须做一个完整的刷新,等待页面加载 有没有更好的方法,也许是使用低级API的编程方法 我要找的东西是: store.buildRequest('query', 'foo', {filter: ...}
store.query('foo', {filter: ...})
这到底是什么URL导致余烬击中。目前,为了找到答案,我只需打开devtools并在network选项卡中查找请求
这并不理想,因为:
- 如果有很多相关的网络请求,则很难找到它们
- 我必须做一个完整的刷新,等待页面加载
store.buildRequest('query', 'foo', {filter: ...}).url()
在应用程序适配器中,覆盖
urForQuery
。
在应用程序适配器中,覆盖
urForQuery
。
您可以通过扩展store服务并在模型的适配器上调用该方法来创建这个确切的方法
// services/store.js
export default Ember.Service.extend({
buildRequestURL(requestType, modelName, data) {
let id, query;
// determine if a query or an id
if (Ember.typeOf(data) === 'object') {
query = data;
} else {
id = data;
}
return this.adapterFor(modelName) // retrieve the adapter for your model
.buildURL( // build the url for your request
modelName,
id,
null,
requestType,
query
);
}
});
buildURL
根据请求类型在内部调用特定的url构建方法。(urlForFindRecord
,urlForQuery
,.etc)
您使用它的方式与您的建议基本相同(只是最后没有.url()
):
您可以通过扩展store服务并在模型的适配器上调用该方法来创建这个确切的方法
// services/store.js
export default Ember.Service.extend({
buildRequestURL(requestType, modelName, data) {
let id, query;
// determine if a query or an id
if (Ember.typeOf(data) === 'object') {
query = data;
} else {
id = data;
}
return this.adapterFor(modelName) // retrieve the adapter for your model
.buildURL( // build the url for your request
modelName,
id,
null,
requestType,
query
);
}
});
buildURL
根据请求类型在内部调用特定的url构建方法。(urlForFindRecord
,urlForQuery
,.etc)
您使用它的方式与您的建议基本相同(只是最后没有.url()
):
// get the url for for store.query('foo', { filter: ... })
const urlQuery = store.buildRequestURL('query', 'foo', { filter: ... });
// get the url for store.findRecord('bar', 1);
const urlFind = store.buildRequestURL('findRecord', 'bar', 1);
// ...