Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.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 获取URL作为余烬数据中的资源的模型_Javascript_Ember.js_Model_Ember Data - Fatal编程技术网

Javascript 获取URL作为余烬数据中的资源的模型

Javascript 获取URL作为余烬数据中的资源的模型,javascript,ember.js,model,ember-data,Javascript,Ember.js,Model,Ember Data,我有一个模型,它获取一个URL作为数据源,目前是一个其他模型的数组。我想将其映射为一个存储,因此我创建了一个充当中间层的模型 这是模式: app/models/user_info.js export default DS.Model.extend({ .... studies: DS.belongsTo('studies-collection-id); .... app/models/studies-collection-id.js export default DS.Model.extend

我有一个模型,它获取一个URL作为数据源,目前是一个其他模型的数组。我想将其映射为一个存储,因此我创建了一个充当中间层的模型

这是模式:

app/models/user_info.js

export default DS.Model.extend({
....
studies: DS.belongsTo('studies-collection-id);
....
app/models/studies-collection-id.js

export default DS.Model.extend({
  studies: DS.hasMany('study')
});
export default ApplicationAdapter.extend({
  urlForFindRecord (id, modelName, snapshot) {
    return(id);
  }
});
import ApplicationSerializer from './application';

export default ApplicationSerializer.extend({
  primaryKey: 'self',
  normalizeResponse(store, primaryModelClass, payload, id, requestType) {
    let jsonApiStudiesArray = [];
    jsonApiStudiesArray['data'] = payload.slice(0);
    jsonApiStudiesArray['self'] = id;
    jsonApiStudiesArray['type'] = primaryModelClass.modelName;
    jsonApiStudiesArray['data'] = [];
    jsonApiStudiesArray['data']['attributes'] = payload.slice(0).map(function(item){
      let returnArray = [];
      returnArray['type'] = 'study';
      returnArray['self'] = item['self'];
      returnArray['attributes'] = item;
      return(returnArray);
    });
    return this._super(store, primaryModelClass, jsonApiStudiesArray, id, requestType);
  }
});
app/adapters/studies-collection-id.js

export default DS.Model.extend({
  studies: DS.hasMany('study')
});
export default ApplicationAdapter.extend({
  urlForFindRecord (id, modelName, snapshot) {
    return(id);
  }
});
import ApplicationSerializer from './application';

export default ApplicationSerializer.extend({
  primaryKey: 'self',
  normalizeResponse(store, primaryModelClass, payload, id, requestType) {
    let jsonApiStudiesArray = [];
    jsonApiStudiesArray['data'] = payload.slice(0);
    jsonApiStudiesArray['self'] = id;
    jsonApiStudiesArray['type'] = primaryModelClass.modelName;
    jsonApiStudiesArray['data'] = [];
    jsonApiStudiesArray['data']['attributes'] = payload.slice(0).map(function(item){
      let returnArray = [];
      returnArray['type'] = 'study';
      returnArray['self'] = item['self'];
      returnArray['attributes'] = item;
      return(returnArray);
    });
    return this._super(store, primaryModelClass, jsonApiStudiesArray, id, requestType);
  }
});
这很好,我得到了需要触发的请求,服务器响应了我所期望的一系列研究。问题是我无法让这些研究以任何方式到达商店

我尝试序列化响应,但目前没有成功。我发布我现在使用的内容:

/app/serializers/studies-collection-id.js

export default DS.Model.extend({
  studies: DS.hasMany('study')
});
export default ApplicationAdapter.extend({
  urlForFindRecord (id, modelName, snapshot) {
    return(id);
  }
});
import ApplicationSerializer from './application';

export default ApplicationSerializer.extend({
  primaryKey: 'self',
  normalizeResponse(store, primaryModelClass, payload, id, requestType) {
    let jsonApiStudiesArray = [];
    jsonApiStudiesArray['data'] = payload.slice(0);
    jsonApiStudiesArray['self'] = id;
    jsonApiStudiesArray['type'] = primaryModelClass.modelName;
    jsonApiStudiesArray['data'] = [];
    jsonApiStudiesArray['data']['attributes'] = payload.slice(0).map(function(item){
      let returnArray = [];
      returnArray['type'] = 'study';
      returnArray['self'] = item['self'];
      returnArray['attributes'] = item;
      return(returnArray);
    });
    return this._super(store, primaryModelClass, jsonApiStudiesArray, id, requestType);
  }
});
有人对此有什么建议吗?。我觉得我正在尝试破解这个灰烬,它应该更容易。 非常感谢你的帮助

更新:我想我找到了一个解决方案,通过在两者之间使用一个虚拟模型,ember可以消化这个问题。我的API返回带有指向资源的URL的字段。为了能够执行这两个查询并将它们加载到相应的存储中,我确实以这种方式修改了serialiser:

import ApplicationSerializer from './application';

export default ApplicationSerializer.extend({
  normalizeResponse(store, primaryModelClass, payload, id, requestType) {
    let jsonApiStudiesArray = {};
    jsonApiStudiesArray['self'] = id;
    jsonApiStudiesArray['studies'] = payload.slice(0).map(function(item){
      return(item['self']);
    });
    return this._super(store, primaryModelClass, jsonApiStudiesArray, id, requestType);
  }
});

我不太确定你的API是怎样的。您能展示一下您的请求URL和响应是什么样子的吗?我不确定您的API是什么样子的。您能展示一下您的请求URL和响应的样子吗?