+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Creare Schema con Mongoose - Node JS

  1. #1
    andreajs non  in linea Novello
    Ciao , vorrei popolare un array di oggetti creato con Schema Mongoose 5, dato che la struttura un po articolata ho creato dei sottooggetti. Ho provato anche a mettere default: undefined ma quando genero il modello , nel db "fasi" sempre vuoto. Qualcuno pu aiutarmi gentilmente?
    Ecco il codice, vi ringrazio:

    const mongoose = require('mongoose');
    
    // Fasi
    const DateSchema = { type: Date, default: new Date(false) };
    const NumberSchema = { type: Number , default: 1 };
    const StringSchema = { type: String, default: "" };
    
    const CustomSchema = {
            tempoaSchedaInOre: DateSchema,
            tempoTotaleInOre: DateSchema,  
            tempoTotaleInMinuti: NumberSchema,
            secNecessariPerUnaPCB: NumberSchema,
            nomeOperatore: StringSchema,
            costohOperatore: NumberSchema,
            percSpesaSulTotale: NumberSchema,      
            costoFase: NumberSchema
    };
    // End Fasi
    
    
    
    const preventiviSchema = mongoose.Schema({
    cliente:{
        type: String,
        required: true
    },
    codice:{
        type: String,
        required: false
    },
    descrizione:{
        type: String,
        required: false
    },
    pcb : {
        nSchede: {  type: Number, required: true  },
        nSchedeInPCB: {  type: Number, required: true },
        nPCB: { type: Number, required: false }
    },
    smd: {
        qtSmd: { type: Number, required: false},
        qtFeeder: { type: Number, required: false},
        tempoContMateriale: { type: Number, required: false},
        tempoAttrezSerigrafia: { type: Number, required: false},
        tempoAttrezPeP: { type: Number, required: false},
        tempoSmontaggio: { type: Number, required: false},
        tempoSerigrafia: { type: Number, required: false},
        tempoAvvioProduzione: { type: Number, required: false},
        pepChipH: { type: Number, required: false},
        tempoRevisioneAoi: { type: Number, required: false},
        qtSmdLatoB: { type: Number, required: false},
        qtFeederLatoB: { type: Number, required: false},
        tempoContMaterialeLatoB: { type: Number, required: false},
        tempoAttrezSerigrafiaLatoB: { type: Number, required: false},
        tempoAttrezPePLatoB: { type: Number, required: false},
        tempoSmontaggioLatoB: { type: Number, required: false},
        tempoAvvioProduzioneLatoB: { type: Number, required: false},
        tempoSerigrafiaLatoB: { type: Number, required: false},
        pepChipHLatoB: { type: Number, required: false},
        tempoRevisioneAoiLatoB: { type: Number, required: false},
    },
    tht:{
        qtTht: { type: Number, required: false},
        qtTipolTht: { type: Number, required: false},
        qtPthdaPreparare: { type: Number, required: false},
        tempoDiPrepTht: { type: Number, required: false},
        tempoControlloMateriale: { type: Number, required: false},
        tempoMontaggioTht: { type: Number, required: false},
        tempoSaldaturaOnda: { type: Number, required: false},
        tempoSaldaturaaMano: { type: Number, required: false},
        qntPuntiSaldaturaMano: { type: Number, required: false},
        tempoMontaggioPonticelli: { type: Number, required: false},
        qtPonticelliDaMontare: { type: Number, required: false},
        modifica: { type: Number, required: false},
        tempoDiRevisione: { type: Number, required: false},
        rivettatura: { type: Number, required: false},
        rivettatura2: { type: Number, required: false},
        qtProtezione: { type: Number, required: false},
        tempoProtezione: { type: Number, required: false},
        targhette: { type: Number, required: false},
        tropicalizzazione: { type: Number, required: false},
        tempoSeparazioneSchede: { type: Number, required: false}
    },
    materialiDiConsumo:{
        crema: { type: Number, required: false},
        stagno: { type: Number, required: false},
        rivetto: { type: Number, required: false},
        kaptonInNastro: { type: Number, required: false},
        bolliniKapton: { type: Number, required: false},
        splicing: { type: Number, required: false},
        spellicolabile: { type: Number, required: false},
        tropicalizzante: { type: Number, required: false}    
    }, 
    imballaggio:{
        tempoDiImballaggio: { type: Number, required: false},
        buste: { type: Number, required: false},
        cartoni: { type: Number, required: false}
    },
    altreAttivita:{
        modificheVarie: { type: Number, required: false},
        numeroFlash: { type: Number, required: false},
        programmazioneFlash: { type: Number, required: false},
        componentiMeccanici: { type: Number, required: false},
        collaudo: { type: Number, required: false}
    },
    data:{
        type: Date,
        default: Date.now
    },
    
    fase: {       
        type:[{          
        controlloMaterialeSmd : CustomSchema,
        equipaggiamentoSerig : CustomSchema,
        equipaggiamentoPeP : CustomSchema,
        avvioProduzione : CustomSchema,
        serigrafia : CustomSchema,
        montaggioSmd : CustomSchema,
        smontaggioPeP : CustomSchema,
        revisioneAoi : CustomSchema,
        equipaggiamentoSerigB : CustomSchema,
        equipaggiamentoPePB : CustomSchema,
        avvioProduzioneLatoB : CustomSchema,
        serigrafiaLatoB : CustomSchema,
        montaggioSmdLatoB : CustomSchema,
        smontaggioPePLatoB : CustomSchema,
        revisioneAoiLatoB : CustomSchema,
        controlloMaterialeTHT: CustomSchema,
        montaggioComponentiMec: CustomSchema,
        preparazioneComponenti: CustomSchema,
        rivettatura: CustomSchema,
        giostra: CustomSchema,
        protezioni: CustomSchema,
        modifica: CustomSchema,
        ponticello: CustomSchema,
        saldaturaAdOnda: CustomSchema,
        saldaturaAMano: CustomSchema,
        revisione: CustomSchema,
        collaudo: CustomSchema,
        targhetta: CustomSchema,
        separazioneSchede: CustomSchema,
        tropicalizzazione: CustomSchema,
        programmazioneFlash: CustomSchema,
        imballaggio: CustomSchema,
        totale: CustomSchema        
        }]
    },
    
    utente:{
        type: String,
        required: false
    }
    });
    
    mongoose.model('preventivi',preventiviSchema);
    
    Ultima modifica di AntonioG; 24-12-2020 11:28 

  2. #2
    Meglio mettere il codice nel post dato che la presenza del link implica il controllo del post ed scomodo perch potrebbe scadere e rendere illeggibile tutto il thread.
    ℹ️ Leggi di pi su AntonioG ...

  3. #3
    andreajs non  in linea Novello
    Grazie Antonio, intendi di non annidare questa parte?:

    // Fasi
    const DateSchema = { type: Date, default: new Date(false) };
    const NumberSchema = { type: Number , default: 1 };
    const StringSchema = { type: String, default: "" };

    const CustomSchema = {
    tempoaSchedaInOre: DateSchema,
    tempoTotaleInOre: DateSchema,
    tempoTotaleInMinuti: NumberSchema,
    secNecessariPerUnaPCB: NumberSchema,
    nomeOperatore: StringSchema,
    costohOperatore: NumberSchema,
    percSpesaSulTotale: NumberSchema,
    costoFase: NumberSchema
    };
    // End Fasi
    Ultima modifica di Master85; 24-12-2020 15:13 

  4. #4
    No no ... intendevo nel tuo post ... non postare il link su patebin ma direttamente il codice nel forum. Ho corretto io il tuo post.
    ℹ️ Leggi di pi su AntonioG ...

  5. #5
    andreajs non  in linea Novello
    ah ok chiaro, non volevo fosse troppo impattante, attendo aiuti ^_^

  6. Ciao, premetto che non conosco le tecnologie di cui parli, ma cos ... a naso ,

    mi sembra che manchi almeno la connessione di default instaurata al dabase mongodb in cui vuoi creare lo schema

    https://mongoosejs.com/docs/models.html

    P.S.
    scusa se ho detto stupidate
    ℹ️ Leggi di pi su sspintux ...

  7. #7
    L'avatar di Master85
    Master85 ora  in linea Moderatore Globale Ultimo blog: Eclipse: Un IDE per PHP e Python
    Quote Originariamente inviato da andreajs Visualizza il messaggio
    nel db "fasi" sempre vuoto
    Ciao Andrea, credo di non aver capito cosa intendi. Potresti spiegarci un po' meglio cosa stai cercando di fare, mostrando anche un esempio in cui "fasi" e' sempre vuoto.

    Da quello che posso capire dal tuo codice, hai definito uno Schema e poi creato un modello 'preventivi' a partire da quest'ultimo. Ma non capisco in che modo, "fasi" e' sempre vuoto.

    Ho fatto qualche prova, banale, e non riscontro il tuo problema.

    Nel mio esempio, ho creato uno Schema "schedule" con una array di "appointment". E sono in grado di salvare e recuperare le informazioni, correttamente:


    const AppointmentSchema = new mongoose.Schema({
    title: String,
    dueDate: Date,
    priority: Number,
    });

    const ScheduleSchema = new mongoose.Schema({
    year: Number,
    month: Number,
    day: Number,
    appointments: [AppointmentSchema],
    })

    const Schedule = mongoose.model('Schedule', ScheduleSchema);

    let schedule = await Schedule.findOne({
    year: 2020,
    month: 12,
    day: 24,
    }).exec();

    if (schedule) {
    console.log("Schedule already exist!")
    } else {
    console.log("Not exist, creating schedule...")
    schedule = new Schedule({
    year: 2020,
    month: 12,
    day: 24,
    appointments: [
    {
    title: 'Dentist',
    dueDate: Date.now(),
    priority: 1,
    }
    ]
    });
    schedule.save();
    }

    console.log(schedule);

    Torna pure con qualche dettaglio in piu'

  8. #8
    andreajs non  in linea Novello
    Quote Originariamente inviato da sspintux Visualizza il messaggio
    Ciao, premetto che non conosco le tecnologie di cui parli, ma cos ... a naso ,

    mi sembra che manchi almeno la connessione di default instaurata al dabase mongodb in cui vuoi creare lo schema

    https://mongoosejs.com/docs/models.html

    P.S.
    scusa se ho detto stupidate
    Ciao ho strutturato il sw con un MVC , la presente parte di Schema richiamata nel file principale , in tale file appunto instauro la connessione al db. Grazie comunque per l'aiuto

  9. #9
    andreajs non  in linea Novello
    Ciao, in pratica di default Mongoose quando viene generato un array non genera mai prima tutto quello che viene salvato all'interno degli array, st cercando di trovare un escamotage per ovviare a questo problema in quanto sono dati che devo generare io in seguito a calcoli e nel momento in cui richiamo gli oggetti il sistema non li riconosce. Gli oggetti vengono generati solo dopo il primo save().
    Ecco il modello generato sul db:

    {
        "_id": {
            "$oid": "5fe4748d44b7384b2ce56ae8"
        },
        "cliente": "a",
        "codice": "1",
        "descrizione": "",
        "pcb": {
            "nSchede": 1,
            "nSchedeInPCB": 1,
            "nPCB": 1
        },
        "smd": {
            "qtSmd": null,
            "qtFeeder": null,
            "tempoContMateriale": null,
            "tempoAttrezSerigrafia": null,
            "tempoAttrezPeP": null,
            "tempoSmontaggio": null,
            "tempoSerigrafia": null,
            "tempoAvvioProduzione": null,
            "pepChipH": null,
            "tempoRevisioneAoi": null,
            "qtSmdLatoB": null,
            "qtFeederLatoB": null,
            "tempoContMaterialeLatoB": null,
            "tempoAttrezSerigrafiaLatoB": null,
            "tempoAttrezPePLatoB": null,
            "tempoSmontaggioLatoB": null,
            "tempoAvvioProduzioneLatoB": null,
            "tempoSerigrafiaLatoB": null,
            "pepChipHLatoB": null,
            "tempoRevisioneAoiLatoB": null
        },
        "tht": {
            "qtTht": null,
            "qtTipolTht": null,
            "qtPthdaPreparare": null,
            "tempoDiPrepTht": null,
            "tempoControlloMateriale": null,
            "tempoMontaggioTht": null,
            "tempoSaldaturaOnda": null,
            "tempoSaldaturaaMano": null,
            "qntPuntiSaldaturaMano": null,
            "tempoMontaggioPonticelli": null,
            "qtPonticelliDaMontare": null,
            "modifica": null,
            "tempoDiRevisione": null,
            "rivettatura": null,
            "rivettatura2": null,
            "qtProtezione": null,
            "tempoProtezione": null,
            "targhette": null,
            "tropicalizzazione": null,
            "tempoSeparazioneSchede": null
        },
        "materialiDiConsumo": {
            "crema": null,
            "stagno": null,
            "rivetto": null,
            "kaptonInNastro": null,
            "bolliniKapton": null,
            "splicing": null,
            "spellicolabile": null,
            "tropicalizzante": null
        },
        "imballaggio": {
            "tempoDiImballaggio": null,
            "buste": null,
            "cartoni": null
        },
        "altreAttivita": {
            "modificheVarie": null,
            "numeroFlash": null,
            "programmazioneFlash": null,
            "componentiMeccanici": null,
            "collaudo": null
        },
        "utente": "5fce35f698f579454c5d7ebf",
        "data": {
            "$date": "2020-12-24T10:59:25.402Z"
        },
        "fase": [],
        "__v": 0
    }
    
    Ultima modifica di Master85; 25-12-2020 00:13  Motivo: Rimosso il quote e aggiunto il tag code

  10. #10
    andreajs non  in linea Novello
    Ultima modifica di andreajs; 25-12-2020 07:55 

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 6
    Ultimo Post: 22-09-2020, 08:57
  2. Risolto: TreeView collapse child node
    Da trito nel forum Visual Basic .Net
    Risposte: 5
    Ultimo Post: 28-09-2010, 16:56
  3. Risposte: 0
    Ultimo Post: 28-12-2009, 23:23
  4. [MySQL]Creare Schema
    Da bornslippy nel forum MySQL
    Risposte: 8
    Ultimo Post: 17-02-2006, 18:00
  5. appendere un nodo ad un oggetto di tipo node e no element
    Da LUCABORRELLI1 nel forum HTML, CSS e JavaScript
    Risposte: 0
    Ultimo Post: 16-01-2006, 13:54