MERN 7 React JS – Base per MongoDB

Controllare solo se il server risponde

router.post('/register', (req, res) => {
    console.log("ciao dal server: register")

    res.send('registro_pronto');
});

PROBLEMA PARAMETRI GET - Chiamata del server con Oggetto e serie di variabili

    axios.get('/domande/carica_tutte_sort_old/', {
        params: {
            id_utente: id_utente,
            ordine_visualizzazione: ordine_visualizzazione,
            scelta_query: input_opzioni.scelta_query,
            lista_materie: JSON.stringify(lista_materie_caricate_da_mongo)
        }
    }).then((res) => {
            SET_max_indice_aux(lista_domande[0].indice_aux)
            crea_lista_stornati(res.data, lista_materie_caricate_da_mongo)
        }).catch((error) => {
            console.log(error)
        });
  }
 
    axios.get('/classi/classi_carica_tutti_programma/' + id_utente + '/' + programma_della_classe)
        .then((res) => {
            console.log('CLASSI appena fecciate da mongo')
            let lista_classi_per_programma = res.data
            controlla_se_aggiungere_classi_ad_array(lista_classi_gia_presenti, lista_classi_per_programma, materiale_id)        

        }).catch((error) => {
            console.log(error)
    });
  router.get('/classi_carica_tutti_programma/:utente/:programma', async (req, res) => {
    console.log('CLASSI trova_le classi per programma')
    console.log(req.params.utente)
    console.log(req.params.programma)
    console.log(req.params.end_1)
    try {
      const Classi_document = await CLASSI.find({ utente: req.params.utente,
                            programma: req.params.programma })
                            .sort({ date: 'descending' })
                            .populate('programma');
      res.json(Classi_document);
      //        console.log(Domande_document)

    } catch (err) {
      res.json({ message: err });
    }
  });

Classica richiesta di documenti

ciao prova
router.get('/alunni_carica_per_classe/:utente/:classe', async (req, res) => {
    console.log('CARICA ALUNNI per l utente')
    console.log(req.params.utente)
    console.log(req.params.classe)
    try {
        const Alunni_document = await ALUNNI.find({ utente: req.params.utente,
                                                    classe_per_studiare:req.params.classe})
                                                    .sort({ date: 'descending' })
                                                    .populate('classe_per_studiare');
        res.json(Alunni_document);
        //        console.log(Domande_document)

    } catch (err) {
        res.json({ message: err });
    }
});

In un documento modificare un oggetto intero

    const nuova_immagine_s3 = {
        key:  '',
        descrizione: 'descrizione'
    }
    axios.patch('/domande/modifica_immagine_domanda_S3/' + item._id, nuova_immagine_s3)
    .then((res) => {
        console.log(res.data)
       
    }).catch((error) => {
        console.log(error)
    });
router.patch('/modifica_immagine_domanda_S3/:postId', async (req, res) => {
    console.log('DOMANDA modifica della immagine caricata nella domanda')
    console.log(req.params.postId)
    console.log(req.body)
    try {
        const update_domande = await Domande.updateOne(
            { _id: req.params.postId },
            {
                $set: { indirizzo_S3_immagine_domanda: { key: req.body.key, descrizione: req.body.descrizione } }
            }
        );
        res.json(update_domande);
    } catch (err) {
        res.json({ message: err });
    }
});
Nello schema
    indirizzo_S3_immagine_domanda: {
        key: {
            type: String,
            default: ''
        },
        descrizione: {
            type: String,
            default: ''
        }
    },

Aumentare o Modificare un indice numerico in un campo di una collezione

    axios.patch('/domande/aumenta_indici/' + props.item.utente)
        .then((res) => {
            console.log(res.data)

        }).catch((error) => {
            console.log(error)
    });
   
   
    const nuovi_indici = {
        indice_end: indice_end,
        indice_aux: -indice_end - 1,
        indice_now: -indice_end
    }
    console.log(nuovi_indici)

    axios.patch('/domande/modifica_indici/' + props.item._id, nuovi_indici)
        .then((res) => {
            console.log(res.data)
        }).catch((error) => {
            console.log(error)
    });
router.patch('/aumenta_indici/:postId', async (req, res) => {
    console.log('domande aumenta_indici')
    console.log(req.params.postId)
    try {
        const update_domande = await Domande.updateMany(
            { "utente": req.params.postId},
            {
                $inc: {indice_aux: 1}
            }
        );
        res.json(update_domande);
        console.log('incremento riuscito')
    } catch (err) {
        res.json({ message: err });
        console.log('incremento errore')
    }
});

router.patch('/modifica_indici/:postId', async (req, res) => {
    console.log('modifica delle domande')
    console.log(req.params.postId)
    console.log(req.body)
    try {
        const update_domande = await Domande.updateOne(
            { _id: req.params.postId },
            {
                $set: {
                    indice_end: req.body.indice_end,
                    indice_aux: req.body.indice_aux,
                    indice_now: req.body.indice_now,
                    data_ultimo_ascolto: Date()
                   
                }
            }
        );
        res.json(update_domande);
    } catch (err) {
        res.json({ message: err });
    }
});

Ricavare la lista di generi in un campo di una collezione

    const Controllo_materie_presenti_in_mongo_db = () => {
        //    funzione_set_aggiornamento(true)
        console.log('Controllo_materie_in_mongo_db')
        //+ user.sub
        axios.get('/domande/trova_materie/' + id_utente)
            .then((res) => {
                console.log(res.data)
                SET_lista_materie(res.data)
                console.log(res.data)

            }).catch((error) => {
                console.log(error)
            });
    }
router.get('/trova_materie/:postId', async (req, res) => {
    console.log('Elenco delle materie')
    console.log(req.params.postId)
    try {
        const Domande_document = await Domande.distinct('materia', { "utente": req.params.postId });
        res.json(Domande_document);
        console.log(Domande_document)

    } catch (err) {
        res.json({ message: err });
    }
});

Gestione array in mongoDB

Aggiunta o cancellazione di un elemento in una riga

Esempio scritto per le variabili numeriche delle domande in toolmemeo
ciao prova
ciao prova
    function Aggiungi_una_variabile(event) {
        event.preventDefault();
        axios.put('/domande_calcoli/aggiungi_una_variabile/' + props.item._id, input)
        .then((res) => {
            console.log(res.data)
        }).catch((error) => {
            console.log(error)
        });
        let lista = props.lista_variabili
// devo creare un numero random per lavorare
        let numero = Number(input.minimo) + Number(input.passo) *
        Math.floor(Math.random() * (Number(input.massimo)-Number(input.minimo))/Number(input.passo))
//                    console.log(numero);
        let input_aux = input
        input_aux.valore_attuale = Number(numero) ;
        lista.push(input_aux)
        props.set_lista_variabili(lista)
        let a = props.cambio_stato1
        props.set_cambio_stato1(!props.cambio_stato1)
    }
 
 
 
      const cancella_variabile =  (id, id_array)  => {
        console.log('CANCELLA VARIABILE')
        console.log(id)
        console.log(id_array)
       
        axios.patch('/domande_calcoli/cancella_variabile/' + id + '/' + id_array)
            .then((res) => {
                console.log(res.data)
            }).catch((error) => {
                console.log('errore')
                console.log(error)
            });
        //        props.SET_variab_aggiorna(!aux)
       
        let lista = lista_variabili
        removeObjectWithId(lista, id_array);
        set_lista_variabili(lista)
        set_cambio_stato1(!cambio_stato1)
    }
router.put("/aggiungi_una_variabile/:postId", async (req, res) => {
    console.log('CALCOLI Aggiunta una variabile')
    console.log(req.params.postId)
    console.log(req.body.nome)
    // use try-catch
    try {
        const update_calcoli = await Domande.findOneAndUpdate(
            { _id: req.params.postId },
            { $push: { variabili_calcoli: { nome: req.body.nome, minimo: req.body.minimo, massimo: req.body.massimo, passo: req.body.passo} } }
        );
        res.json(update_calcoli);
    } catch (err) {
        res.json({ message: err });
    }
});


router.patch('/cancella_variabile/:id/:id_array', async (req, res) => {
    console.log('cancella una variabile nell array')
    console.log(req.params.id)
    console.log(req.params.id_array)
    try {
        const update_array = await Domande.updateOne(
            { _id: req.params.id }, { $pull: { variabili_calcoli: { _id: req.params.id_array } } }
        );
        res.json(update_array);
    } catch (err) {
        res.json({ message: err });
    }
});

Modifica di una riga in un array

router.patch('/aggiorna_risposta_multipla/:postId/:indice/:risposta', async (req, res) => {
    console.log('Aggiorna risposta multipla')
   
    console.log(req.params.postId)
    console.log(req.params.risposta)
    console.log(req.params.indice)

    let stringa = 'risposte_multiple.' + req.params.indice + '.risposta'
    console.log(stringa)
    var oggetto = {};
    oggetto[stringa] = req.params.risposta;
    console.log(oggetto)
   
    try {
        const update_domanda = await Domande.updateOne(
            {_id: req.params.postId},
            {
                $set: oggetto
            }
        );
        res.json(update_domanda);
        console.log('MODIFICA corretta dell array ')
    } catch (err) {
        res.json({ message: err });
        console.log('ERRORE modifica dell array ')
    }
 
});

router.patch('/aggiorna_risposta_multipla_key/:postId/:indice/:key', async (req, res) => {
    console.log('Aggiorna risposta multipla')
   
    console.log(req.params.postId)
    console.log(req.params.key)
    console.log(req.params.indice)

    let stringa = 'risposte_multiple.' + req.params.indice + '.key'
    console.log(stringa)
    var oggetto = {};
    oggetto[stringa] = req.params.key;
    if (req.params.key === "cancella")
    oggetto[stringa] = "";
   
    console.log(oggetto)
   
    try {
        const update_domanda = await Domande.updateOne(
            {_id: req.params.postId},
            {
                $set: oggetto
            }
        );
        res.json(update_domanda);
        console.log('MODIFICA corretta dell array ')
    } catch (err) {
        res.json({ message: err });
        console.log('ERRORE modifica dell array ')
    }
 
});

Modifica di una riga in un array (Tramite id nell-array)

    const Correggi_punto_inizio = (id_array) => {

        console.log('ciaoerrore')
        axios.patch('/video/correggi_punto_inizio_video/' + props.item._id + '/' + id_array + '/' + player.getCurrentTime())
        .then((res) => {
            console.log(res.data)

        }).catch((error) => {
            console.log('errore')

            console.log(error)
        });
    //        props.SET_variab_aggiorna(!aux)
   
        props.SET_variab_aggiorna(current => !current)
    }
router.patch('/correggi_punto_inizio_video/:id/:id_array/:tempo_inizio/', async (req, res) => {
    console.log('BOOKMARK correggi punto di inizio')
    console.log(req.params.id)
    console.log(req.params.id_array)
    console.log(req.params.tempo_inizio)
 
    try {
        const update_array = await VIDEO.updateOne(
            { _id: req.params.id, 'elenco_bookmark._id': req.params.id_array}, { $set: { 'elenco_bookmark.$.tempo': req.params.tempo_inizio } }
        );
        res.json(update_array);
    } catch (err) {
        res.json({ message: err });

    }
});

ciao prova
ciao prova

ciao prova
ciao prova

ciao prova
ciao prova