Bonjour,

Je suis en train de développer un calendrier de gestion d'astreinte avec Vue, Mongo, Node pour mon stage.
Je ne connais pas toutes les subtilités du JS, et j'aurais besoin d'un petit coup de pouce ;)

J'ai donc une DB Mongo qui contient des dates (format Date, classique).
Ces dates je souhaites les récupérer pour ensuite générer le calendrier.

J'ai donc fait mon modèle Jour qui a cette tête là :

let mongoose = require('mongoose');

let jourSchema = new mongoose.Schema({
    "timestamp": {
        type: Number,
        required: true
    },
    "date" : Date,
    "type": String
    //"type": mongoose.Schema.Types.ObjectId
    //"id_intervenantAst": [],
    //"id_intervenantCon": []
});

let Jour = mongoose.model('Jour', jourSchema);

module.exports = Jour;

Je récupère donc ces dates grâce à mon controller Astreinte.js qui les envoi sur le port 5000

const express = require('express');
const router = express.Router();
const Jour = require('../../model/Jour');

router.get('/', async (req,res)=>{
    const dates = await loadJoursCollection();
    res.send(await dates);
});

/*
================================================================================
 Function name: loadJoursCollection
 -------------------------------------------------------------------------------
 Parametres: 
 -------------------------------------------------------------------------------
 Description: Fonction qui retourne toutes les dates enregistrées dans la DB.
 Tri sur timestamp
 -------------------------------------------------------------------------------
 Create: 
 By: 
 Last change: 
================================================================================
*/
async function loadJoursCollection() {
    return Jour.aggregate([
        {
            $project: {month: {$month: "$date"}, date: "$date"}
        },
        {
            $sort: {"date":  1}
        }
    ])
}

module.exports = router;

Ensuite je les envois à ma Vue grâce à au package node axios qui récupère ces données via cette fonction :

import axios from 'axios';

const url = 'http://localhost:5000/astreinte';

class AstreinteService {
static getDatesFromMonth(month) {
        return new Promise(async (resolve, reject)=>{
            try {
                const res = await axios.get(url);
                const data = res.data;
                resolve(
                    data.map(date => ({
                        date: date.date,
                        type: date.type
                    })),
                    data.forEach(element => {
                        if(element.month != month) {
                            //suppression (?)
                        } 
                    })
                );
            } catch (err) {
                reject(err);
            }
        })
    }
    export default AstreinteService;

Puis dans ma Vue j'ai juste à faire :

 async created() {
    try {
      this.dates = await AstreinteService.getDatesFromMonth(5);
    } catch (err) {
      this.error = err.message;
    }

Seulement là, ma fonction me renvoi toutes les dates de ma DB sans prendre en compte mon paramètre "month".
L'idée ça serait de supprimer (ou trier) les données que axios me renvoi et supprimer (ou trier :) ) les dates qui ne correspondent pas à ma variable month passé en paramètre (Genre avec month = 2, je veux uniquement récupérer mes dates de février)
J'espère que j'ai été suffisamment clair (si vous avez des questions pour avoir plus de précisions pas de soucis!), si quelqu'un pourrait me venir en aide ça serait vraiment cool cool!

Merci d'avance.

1 réponse


Ipooo
Auteur
Réponse acceptée

Edit : c'est bon j'ai trouver de moi même!