Итак, я прочитал код своего старшего и увидел, что он сделал что-то вроде этого:
const getTechnicianByIdQuery = await TechnicianModel.findById({id: someId});
const wantedTechnician = await this.populateSingleTechnician(getTechnicianByIdQuery);
const populateSingleTechnician(technician: any): Promise<Technician>{
const populatedTechnician = await technician
.populate({path: 'salon',})
.populate({path: 'user',})
.execPopulate();
return populatedTechnician;
};
Этот код работает нормально, и я думаю, что его способ сделать это круто, что позволяет нам повторно использовать код, поэтому я попробуйте сделать то же самое с другим поиском, используя find () вместо findById ():
const getTechnicianBySalonQuery = await TechnicianModel.find({salon: someSalonId})
const wantedTechnicianGroup = await this.populateTechnicianGroup(getTechnicianBySalonQuery);
const populateSingleTechnician(technicianGroup: any): Promise<Technician[]>{
const populatedTechnicians = await technicianGroup
.populate({path: 'salon',})
.populate({path: 'user',})
.execPopulate();
return populatedTechnicians;
};
Мой код выдает ошибку:
{ошибки: [GraphQLError {сообщение: 'technicianGroup.populate не является функцией', местоположения: [массив], путь: [массив]}], данные: ноль}
Почему мой код выдает эту ошибку а его код работает нормально и возвращает заполненные данные? Если мы скажем, что разделение процесса заполнения, который обычно используется как оператор цепочки, вызвало эту ошибку, мне все равно интересно, какая разница, которая заставляет работать первый блок кода, но не мой.
С другой стороны, я использовал традиционный способ связывания populated () с запросом, и он работал нормально.