#graphql #strapi
#graphql #strapi #страпи
Вопрос:
Я хотел бы получить все экземпляры модели, но использовать разбивку на страницы для их отображения, поэтому я хотел бы получить 20 элементов на каждой странице.
Выборка первых 20 элементов модели будет выглядеть следующим образом:
const response = await strapi.request('POST', '/graphql', {
data: {
query: `query {
exams (limit: 20, start: 0) {
name,
type
_id,
}
}`
}
})
Проблема в том, что для создания функциональности разбивки на страницы мне нужно было бы заранее знать, сколько экземпляров модели ‘exam’ у меня есть.
Кто-нибудь знает, как это сделать?
Если это имеет значение, я использую strapi cms с плагином graphql.
Комментарии:
1. Как ваш сервер GraphQL подключается к базе данных / серверу данных?
2. Вам нужно добавить еще одно поле к вашему запросу, чтобы вернуть общее количество имеющихся экзаменов, это будет просто дополнительное поле, которое может быть разрешено с помощью преобразователя полей.
3. Я подключаюсь через strapi cms и mlab Pavan, каким будет это дополнительное поле?
Ответ №1:
Вам нужно будет добавить функцию подсчета. Вот пример с типом содержимого Restaurant.
./api/restaurant/config/schema.graphql.js
module.exports = {
definition: /* GraphQL */ `
type RestaurantsConnection {
aggregate: RestaurantsAggregate
}
type RestaurantsAggregate {
count: Int
}
`,
query: /* GraphQL */ `
restaurantsConnection(where: JSON): RestaurantsConnection
`,
resolver: {
Query: {
restaurantsConnection(_, args) {
return args;
},
},
RestaurantsConnection: {
aggregate(args) {
return args;
},
},
RestaurantsAggregate: {
count(args) {
return strapi.controllers.restaurant.count({
query: args.where || {},
});
},
},
},
};
Теперь у вас есть соединение для получения значения count
{
restaurantsConnection {
aggregate {
count
}
}
}
Ответ №2:
в Strapi v4 разбивка на страницы возвращает общее количество записей типа контента
query GetPhotosMeta {
photos {
__typename
meta {
__typename
pagination {
__typename
total
}
}
}
}