#node.js #mongodb #rest #mongoose
Вопрос:
Я создаю собственный сервер для приложения, подобного instagram.
В основном есть пользователи,страницы, на которые пользователь может подписаться.Когда я хочу получать сообщения из коллекции с именами сообщений, я хочу получать сообщения от пользователей и страниц, на которые я подписываюсь.
Как я могу достичь такого результата? (я использовал Post.find({page:{$in:user.followingPages},creator:{$in:user.followingUsers}})
, но этот метод дает мне только сообщения, соответствующие обоим условиям, мне нужен пост, соответствующий одному из них или обоим)
Ниже приведена моя модель пользователя
const userSchema = mongoose.Schema(
{
username: {
type: String,
default: 'nesibeyyubov',
},
bio: {
type: String,
default: '',
},
followingUsers: [
{
type: mongoose.Types.ObjectId,
ref: 'User',
},
],
posts: [
{
type: mongoose.Types.ObjectId,
ref: Post
},
],
followingPages: [
{
type: mongoose.Types.ObjectId,
ref: 'Page',
},
],
},
{ timestamps: true }
);
Это постмодель
const postSchema = mongoose.Schema(
{
post: {
type: String,
required: true,
},
creator: {
type: mongoose.Types.ObjectId,
ref: 'User'
required: true,
},
likes: [
{
type: mongoose.Types.ObjectId,
ref: 'User',
},
],
},
{ timestamps: true }
);
Ответ №1:
Запятая означает и , вы должны написать $или.
YourModel.find( { $or: [
{ page: { $in: user.followingPages } },
{ creator: { $in: user.followingUsers } },
],
} );