Я создаю приложение и создаю 2 модели.
const UserSchema = new Schema({
_id: Schema.Types.ObjectId,
account:{
type: String,
unique: true
},
email: String,
first_name: String,
last_name: String
}
const VenueSchema = new Schema({
_id: Schema.Types.ObjectId,
venue_type: String,
capacity: Number
})
и
const MediatorSchema = new Schema({
_id: Schema.Types.ObjectId,
account:{
type: String,
unique: true
},
user: {type: Schema.Types.ObjectId,
ref:'User'
}
venue: {type: Schema.Types.ObjectId,
ref:'Venue'
}
})
Схема посредника создана для заполнения нескольких путей.
Проблема в том, что когда я пытаюсь создать запрос типа
var populateQuery = [{path:'user',match: { account:'testuser1'},select:'email'},{path:'venue',match: { venue_type: 'club'}, select:'venue_type'}];
const confirmedVenues = await Mediator.find({})
.exists('venue',true)
.populate(populateQuery)
.exec();
возвращаемый массив содержит объекты с нулевыми значениями, когда совпадение не выполняется.
Например, когда я запрашиваю предыдущие совпадения, я получаю следующие результаты
Так что я хочу, чтобы, когда пользователь или место проведения или что-то было NULL (поэтому совпадение не выполнено), весь объект не возвращался.
Я получил следующее решение, но я не хочу делать это таким образом
var i =confirmedVenues.length;
while(i--){
if(confirmedVenues[i].user == null){
temp.splice(i,1)
}
}