【问题标题】:Mirage + JSONAPI Array海市蜃楼 + JSONAPI 数组
【发布时间】:2017-08-03 19:42:09
【问题描述】:

我有一个像这样设置的基本 api...

/api/v1/logs/
/api/v1/logs/type1-logs
/api/v1/logs/type2-logs
/api/v1/logs/type3-logs

它们每个都只支持 GET,如果用户向 /api/v1/logs 发出请求,他们应该会获取所有日志。

我在 Mirage 中设置了工厂和场景,但我不确定如何实际返回不同类型的数组。

我当前的 config.js 导致 ember 抱怨未定义的资源类型。

  this.get('/logs', function(db, request) {
    let data = {
      data: [
        db.type1Logs,
        db.type2Logs,
        db.type3Logs
      ]
    };
    return data;
  });

我做错了什么?

【问题讨论】:

  • 您有机会尝试我提供的答案吗?

标签: ember.js ember-data ember-cli-mirage


【解决方案1】:

从 mirage 的 config.js 中的典型路由定义(返回多个数据)返回的内容是 Collection 类型。这意味着您需要返回一个集合。所以……类似于以下应该可以工作:

import { Collection } from 'ember-cli-mirage';

export default function() {
    this.get('/logs', function(db, request) {
        let models = Ember.A();
        models.pushObjects(db.type1Logs.all().models);
        models.pushObjects(db.type2Logs.all().models);
        models.pushObjects(db.type3Logs.all().models);

        return new Collection('log', models);
    });
}

我最初误解了您的问题并采取了不同的方法来创建所有日志和过滤类型,并为您创建了以下twiddle。但后来我意识到您为每种类型创建了不同的数据,而您需要的只是合并所有这些数据。然后我决定将 type2 和 type3 的日志合并到我准备的 twiddle 中。您可以在mirage/config.jsthis.get('/logs/type2type3-logs', function(schema){....} 定义下看到我上面提供的代码示例。我希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    相关资源
    最近更新 更多