У меня есть простая функция, которая может включать в себя сложный запрос.Я хочу, чтобы пользователи могли показываться только тем пользователям, которые уже дали разрешение на их поиск на моем сайте.
Проблема в том, что я понятия не имею, как добавить условное выражение, а затем выполнить запрос к запрашиваемым пользователям.
- Пользователь вызывает поиск.
- Если для выбранных пользователей выбрано «Только одобрение».
- Проверьте, есть ли в списке одобренных пользователей поиск.
Я использую 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);