Нужна помощь с большой социальной сетью, которую я создаю с помощью Node js и Mongoose для моей MongoDB.
Моя идея состоит в том, чтобы смешать ответ от модели, чтобы показать одно сообщение из категории, на которую подписан пользователь, затем показать сообщение из другой категории, за которой также подписан пользователь, а затем показать сообщение из группы (частная категория) . Точно так же пост 3 + 1 (3 категории + 1 группа), но пользователь может следить за многими категориями и иметь много групп.
Есть ли что-то, что я могу использовать для получения сообщений из СЛУЧАЙНЫХ категорий + групп? Я пытаюсь здесь не изобретать колесо, записывая случайную логику с Math
Итак, это моя упрощенная схема:
var userSchema = new Schema({
groups: [{type: Schema.Types.ObjectId, ref: 'Group'}],
followingCategories: [{type: Schema.Types.ObjectId, ref: 'Category'}]
});
var postSchema = new Schema({
user: {type: Schema.Types.ObjectId, ref: 'User'},
category: {type: Schema.Types.ObjectId, ref: 'Category'}
});
var categorySchema = new Schema({
user: {type: Schema.Types.ObjectId, ref: 'User'},
group: {type: Schema.Types.ObjectId, ref: 'Group'},
posts: [{type: Schema.Types.ObjectId, ref: 'Post'}]
});
var groupSchema = new Schema({
users: [{type: Schema.Types.ObjectId, ref: 'User'}],
categories: [{type: Schema.Types.ObjectId, ref: 'category'}]
});
И это должно быть доступно через модель пользователя, например:
User.findById(..., function(err, user){
//logic that gets user posts from random categories and groups
});
Имея в виду следующее:
Это должно быть быстро (ожидается публикация миллионов сообщений)
Он использует
limit(10)
иskip(int)
для отложенной загрузки APIКатегории и группы случайны, но сообщения в порядке
{created_at: desc}
Пользователь может подписаться на многие
categories
и может быть на многихgroups
.