В KeystoneJS мы в настоящее время используем агрегацию для запроса Mongo и просто захватываем весь набор и возвращаем это. Теперь, когда мы получаем больше данных, нам нужно разбивать на страницы. KeystoneJS поддерживает разбиение на страницы, но по внешнему виду он поддерживает только команду find в параметре параметра where. Есть ли способ, которым разбиение на страницы, предоставленное KeystoneJS, может разбивать на страницы результаты из запроса агрегации?KeystoneJS список разбивки на совокупность результатов
Пример агрегатных запросов:
keystone.list('Posts').model.aggregate([
{'$match': {"state":"published"}},
{'$unwind': {'path':"$actions", 'preserveNullAndEmptyArrays': false}},
{'$lookup': {
'from':"actions",
'localField': "actions",
'foreignField': "_id",
'as': "actions"}},
{'$match': {"actions.key": action}},
{'$unwind': {'path':"$postTopics"}},
{'$lookup': {
'from':"posttopics",
'localField': "postTopics",
'foreignField': "_id",
'as': "posttopics"}},
{'$match': {"posttopics.key": topic}},
{'$unwind': {'path':"$postSubTopics"}},
{'$lookup': {
'from':"postsubtopics",
'localField': "postSubTopics",
'foreignField': "_id",
'as': "postsubtopics"}},
{'$match': {"postsubtopics.key": subtopic}},
{'$unwind':
{'path':"$postSubTopics",
'preserveNullAndEmptyArrays': true}},
{'$unwind':
{'path':"$postTopics",
'preserveNullAndEmptyArrays': true}},
{'$lookup': {
'from':"postsubtopics",
'localField': "postSubTopics",
'foreignField': "_id",
'as': "postsubtopics"}},
{'$lookup': {
'from':"posttopics",
'localField': "postTopics",
'foreignField': "_id",
'as': "posttopics"}},
{'$match': {
'$or':
[
{ "postsubtopics.searchKeywords": keyword },
{ "posttopics.searchKeywords": keyword }
]
}}
]).sort('-publishedDate');
Результаты, которые возвращают обратно из этого я хотел бы иметь возможность постраничной через. Я изучаю использование мангуста, чтобы сделать это, или просто фильтровать через массив с помощью javascript, но так как я вижу, что у Keystone есть разбиение на страницы, я хотел спросить участников, если это поддерживается.
Спасибо за ввод. Я попробовал ранее указанный выше запрос, а также попробовал много вариантов, но ни один из них не сработал. В приведенном выше примере жалуется, что агрегат не является функцией. У меня есть место, где я хватаю все данные и выполняю разбивку на страницы с помощью JS. Рамка агрегации в Монго, по-видимому, растет в популярности, и мне было просто любопытно, если бы была простая вставка и игра для трассировки трапецеидальных искажений, чтобы поддерживать агрегацию вместо поиска запросов. – lshaffer