Как я могу отобразить своему зарегистрированному пользователю список сообщений от людей, за которыми они следят?
У меня есть схема сообщений (сокращена для простоты):
const postSchema = {
userId: String,
description: String,
timestamp: Date,
longitude: Number,
latitude: Number,
}
И моя схема подписчика (также сокращена):
const followerSchema = {
userId: String, // person who click follow on a user
followingId: String, // the account they were viewing
timestamp: Date
}
Как найти последние сообщения, где post.user
равно follower.followingId
(при условии, что follower.userId
равно моему зарегистрированному пользователю) )?.
Попытки пока:
Я потратил пару часов на это, и я могу получить результаты только для сообщений и затем отфильтруйте их в Node.js, но это неэффективно в массовом масштабе.
Вот запрос поиска , который не работает :
const posts = await Post.aggregate([
{
$lookup:
{
from: "follower",
localField: "userId",
foreignField: "followingId",
as: "relationship"
}
},
{ "$match": { "relationship.userId": req.userId } }
]);
res.send({posts});
Любые предложения о том, как заставить это работать?
Для меня может быть лучшим решением:
- Загрузить всех пользователей, на которых я подписан, и получить их идентификаторы
- Загрузить все сообщения, где
userId
равно любой из пользовательских идентификаторов в массиве.