Условие запроса Mongoose внутри списка - PullRequest
0 голосов
/ 30 апреля 2018

Я не уверен, как сделать название этого вопроса более понятным:)

Итак, позвольте мне перейти непосредственно к схеме:

const UserSchema = new Schema({
  name: String,
  _events: [{ type: Schema.Types.ObjectId, ref: "Event" }]
});

Обычно пользователь может иметь несколько событий, на которые ссылается другая модель, Событие. Коллекция событий выглядит так:

const EventSchema = new Schema({
  _userId: { type: Schema.Types.ObjectId, ref: "User" },
  eventDate: { type: Date, required: true },
  instructions: String,
});

Я делаю запрос на Mongoose, который перечисляет все события, созданные пользователем, следующим образом:

  app.get("/api/events/", requireAuth, async (req, res, next) => {
    try {
      const userEvents = await User.findById(req.user._id)
        .populate({
          path: "_events",
          model: "Event",
          })
        .select({ _events: 1 })
        .exec();
      res.send(userEvents);
    } catch (err) {
      next(err);
    }
  });

Это отлично работает. Однако я заинтересован в перечислении только будущих событий. Как я могу изменить запрос для выполнения условия, где eventDate> текущая дата?

1 Ответ

0 голосов
/ 30 апреля 2018

Вы должны запросить это в функции заполнения следующим образом:

Здесь:

.populate({
  path: "_events",
  model: "Event",
})

Добавить это:

match: { eventDate: { $gte: Date.now() } }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...