отфильтровывать достоверные данные из ответа graphql на страпи - PullRequest
1 голос
/ 25 января 2020

В моих моделях есть некоторая информация, которая должна быть видна только некоторым пользователям. Как я могу изменить ответ GraphQL, чтобы удостовериться, что сервер не пропускает какие-либо важные данные?

Я частично добился успеха, переопределив метод find в контроллере модели. Я могу изменить / удалить поля следующим образом:

  async find(ctx) {
    let entities;
    if (ctx.query._q) {
      entities = await strapi.services.article.search(ctx.query);
    } else {
      entities = await strapi.services.article.find(ctx.params);
    }

    return entities.map(entity => {
        // filter information here e.g.
        entity.name = ""; // name will be always empty in the GraphQL response
        return entity; 
    });
  }

Но для вложенных моделей я не могу отфильтровать их. Пример:

Article имеет много Documents. Некоторые документы не должны быть видны, но ответ GraphQL не учитывает, если я удаляю данные:

//...
    return entities.map(entity => {
        // filter information here e.g.
        entity.name = "";
        entity.documents = []; // does not have any effect. Documents are still in the GraphQL response
        return entity;
    });

...