34-3 Récupérer tous les projets (find())
- Pour récupérer tous les projets en provenance de la base de données, on peut utiliser la méthode
find()sur l'entité, à partir du service.src/projets/projets.service.tsexport class ProjetsService {
async obtenirTous(): Promise<Projet[]> {
return Projet.find();
}
//...infoProfitez-en pour en faire une fonction asynchrone (
async) et définir le type de retour (Promise<Projet[]>) - Ensuite, assurez-vous que la fonction
findAlldu contrôleur appelle bien la fonction du servicesrc/projets/projets.controller.ts@Get()
async findAll() {
return this.projetsService.obtenirTous();
}infoAssurez-vous d'en faire une fonction asynchrone (
async) par la même occasion - Testez avec Postman et vous devriez obtenir votre liste de projets!

De plus, remarquez dans la console de WebStorm qu'une requête SQL a été générée pour vous en faisant cet appel!
SELECT "Projet"."id" AS "Projet_id", "Projet"."nom" AS "Projet_nom", "Projet"."description" AS "Projet_description", "Projet"."imageUrl" AS "Projet_imageUrl", "Projet"."date_creation" AS "Projet_date_creation", "Projet"."date_modification" AS "Projet_date_modification" FROM "projets" "Projet"

Classer par date
Il est possible de passer un objet de paramètres on conditions à la fonction find. Par exemple pour les ordonner en fonction de la date (ORDER BY).
Par exemple:
export class ProjetsService {
async obtenirTous(): Promise<Projet[]> {
return Projet.find({
order: {
date_creation: 'DESC',
},
});
}
//...
Ce qui donnera cette requête SQL en exécutant une requête avec Postman
SELECT "Projet"."id" AS "Projet_id", "Projet"."nom" AS "Projet_nom", "Projet"."description" AS "Projet_description", "Projet"."imageUrl" AS "Projet_imageUrl", "Projet"."date_creation" AS "Projet_date_creation", "Projet"."date_modification" AS "Projet_date_modification" FROM "projets" "Projet" ORDER BY "Projet"."date_creation" DESC
Et le résultat correspondant dans la réponse Postman;
[
{
"id": 3,
"nom": "Lan Party",
"description": "Organisation du LAN Party",
"imageUrl": null,
"date_creation": "2023-10-24T19:10:40.056Z",
"date_modification": "2023-10-24T19:10:40.056Z"
},
{
"id": 2,
"nom": "Un projet dans Postgres",
"description": "Premier projet",
"imageUrl": null,
"date_creation": "2023-10-23T19:10:40.056Z",
"date_modification": "2023-10-23T19:10:40.056Z"
}
]
Filtrer selon une condition
Vous pouvez aussi facilement filtrer selon une condition. Par exemple, en fonction du nom:
export class ProjetsService {
async obtenirTous(): Promise<Projet[]> {
return Projet.find({
where: {
nom: 'Lan Party',
},
});
}
//...
Ce qui donnera cette requête SQL en exécutant une requête avec Postman
SELECT "Projet"."id" AS "Projet_id", "Projet"."nom" AS "Projet_nom", "Projet"."description" AS "Projet_description", "Projet"."imageUrl" AS "Projet_imageUrl", "Projet"."date_creation" AS "Projet_date_creation", "Projet"."date_modification" AS "Projet_date_modification" FROM "projets" "Projet" WHERE ("Projet"."nom" = $1) -- PARAMETERS: ["Lan Party"]
Et le résultat correspondant dans la réponse Postman:
[
{
"id": 3,
"nom": "Lan Party",
"description": "Organisation du LAN Party",
"imageUrl": null,
"date_creation": "2023-10-24T19:10:40.056Z",
"date_modification": "2023-10-24T19:10:40.056Z"
}
]
Revenir à la version simple
Pour l'instant, revenez à la version retournant tous les projets:
export class ProjetsService {
async obtenirTous(): Promise<Projet[]> {
return Projet.find();
}
//...