Здравствуйте! Пытаюсь сделать скрипт выборки из БД c помощью mongoose. Что я хочу сделать - есть коллекция, в которой лежат посты, имеющие разные категории. Мне нужно получить посты из каждой категории, причем по 5 штук. limit() не подходит, т.к существенно усложнится код (нужно находить в текущей категории, ждать ответ, следующая - можно же проще?)
Я сделал так:
const Posts = mongoose.model('post');
const Categories = mongoose.model('category');
// create request obj
const findPostsRequest = (categories) => {
if (!categories.length) return {};
let request = { $or: [] };
categories.map(category => {
request.$or.push({ 'categories.link': category.link });
});
console.log(request);
return request;
};
// find all categories
Categories.find()
.then(categories => {
// find 5 posts in every category from categories
Posts.find(findPostsRequest(categories))
.then(posts => {
res.status(201).json(posts);
})
.catch(err => {
res.send({
message: `Ой ошибка: + ${err.message}`
});
});
})
.catch(err => {
res.status(400).json({
message: `При получени записей произошла ошибка: + ${err.message}`
});
});
Т.е - мы получаем все категории, а потом в один запрос массивом ИЛИ добавляем условия категории. Мне нужно куда то впихнуть $slice, но я так и не понял куда. Нужно из каждой категории 5 постов достать. Как это сделать?