Je lis donc le code de mon aîné et je vois qu'il a fait quelque chose comme ça :
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;
};
Ce code fonctionne bien, et je pense que sa façon de faire est cool et nous permet de réutiliser le code. J'essaie donc de faire la même chose avec une recherche différente en utilisant find() au lieu de 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;
};
Mon code donne une erreur :
{ [ GraphQLError { message : 'technicianGroup.populate is not a function', locations : [Arra path : [Array] } [ ] data : null }
Comment se fait-il que mon code donne cette erreur alors que le sien fonctionne correctement et renvoie les données renseignées ? Si nous disons que la séparation du processus d'alimentation, qui est généralement mis en place en tant qu'opérateur de chaînage, a causé cette erreur, je me demande toujours quelle différence cela fait que le premier bloc de code fonctionne mais pas le mien.
D'autre part, j'ai utilisé la méthode traditionnelle qui consiste à enchaîner populated() à la requête et cela a bien fonctionné.