Mongo DB / Mongoose Условное включение поиска - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть простая функция, которая может включать в себя сложный запрос.Я хочу, чтобы пользователи могли показываться только тем пользователям, которые уже дали разрешение на их поиск на моем сайте.

Проблема в том, что я понятия не имею, как добавить условное выражение, а затем выполнить запрос к запрашиваемым пользователям.

  1. Пользователь вызывает поиск.
  2. Если для выбранных пользователей выбрано «Только одобрение».
  3. Проверьте, есть ли в списке одобренных пользователей поиск.

Я использую NodeJS с Mongoose для своих находок.Пожалуйста, помогите.

Схема ниже:

const ProfileSchema = new mongoose.Schema({
  userDOBs: {
    type: [Date],
    required: true
  },
  gender: {
    type: String,
    required: true
  },
  active: {
    type: Boolean,
    default: true
  },
  discoverySettings: {
    approvedOnly: {
      type: Boolean,
      default: false
    }
  },
  blockedProfileIDs: {
    type: [mongoose.Schema.Types.ObjectId],
    ref: "Profile"
  },
  approvedIDs: [
    {
      type: [mongoose.Schema.Types.ObjectId],
      ref: "Profile"
    }
  ]
});

Запрос ниже:

const profiles = await Profile.find({
        $and: [
          {
            _id: {
              $ne: req.user.profileID,
              $nin: doNotDisplayList
            },
            "loc.loc": {
              $nearSphere: [long, lat],
              $maxDistance: maxDistance
            },
            userDOBs: {
              $lt: moment().subtract(filter.searchParams.ageRange[0], "years"),
              $gt: moment().subtract(filter.searchParams.ageRange[1], "years")
            },
            active: true,
            "discoverySettings.visible": true,
            blockedProfiles: {
              $ne: req.user.profileID
            }
          }
        ]
      })
        .sort({
          updatedAt: -1
        })
        .limit(limit)
        .skip(skip);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...