扩展Ember JSONAPIAdapter findAll从自定义url获取json

Extending Ember JSONAPIAdapter findAll for fetching json from custom url

本文关键字:url 获取 json 自定义 Ember JSONAPIAdapter findAll 扩展      更新时间:2023-09-26

我对ember .js比较陌生,我正在研究ember是如何工作的,我有这个问题:从Ember.js路由中,我将像这样调用django api: this.store.findAll('MYMODEL', 'ANOTHER_MODEL_ID')

这个findAll将产生一个类似/mymodel/another_model_id/的api调用,其中another_model_id是一个动态id(类似uuid的字符串)。

我已经尝试用一个自定义适配器(mymodel适配器)覆盖findAll方法,该适配器扩展了ApplicationAdapter (JSONAPIAdapter带有一个用于添加尾斜杠的自定义buildUrl)。但是我的尝试失败了,因为在findAll重写的方法中,我无法到达ANOTHER_MODEL_ID参数。我也试图覆盖urlForFindAll和buildUrl方法与相同的结果。

做这类事情的最好方法是什么?我该怎么做?

findAll没有id参数。你是说find('modelname', 'id')吗?

import DS from 'ember-data';
export default DS.Adapter.extend({
  findAll: function(store, type, sinceToken) {
    var query = { since: sinceToken };
    return new Ember.RSVP.Promise(function(resolve, reject) {
      Ember.$.getJSON(`/${type.modelName}`, query).then(function(data) {
        resolve(data);
      }, function(jqXHR) {
        reject(jqXHR);
      });
    });
  }
});

我已经解决了使用urlForQuery函数和声明我的适配器作为JSONAPIAdapter扩展它与DataAdapterMixin。