В моих моделях есть некоторая информация, которая должна быть видна только некоторым пользователям. Как я могу изменить ответ 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;
});