Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [Node.js] Creare JSON complessi

    ciao a tutti!

    sto mettendo su un rest service con nodejs ed express.
    devo arrivare ad avere un json così:
    codice:
    [
      {
        "sku": "K200-200",
        "name": "K200-200",
        "type": "variable",
        "description": "Pantalone 200",
        "sold_individually": true,
        "categories": [
          "Abito"
        ],
        "imgs": [
          "K200-200.jpg"
        ],
        "attributes": [
          {
            "name": "Colore",
            "visible": true,
            "variation": true,
            "options": [
              "Blu",
              "Nero"
            ]
          },
          {
            "name": "Taglia",
            "visible": true,
            "variation": true,
            "options": [
              "S",
              "M",
              "L"
            ]
          }
        ],
        "variations": [
          {
            "sku": "111",
            "regular_price": "10.00",
            "manage_stock": true,
            "stock_quantity": 10,
            "attributes": [
              {
                "name": "Colore",
                "option": "Blu"
              },
              {
                "name": "Taglia",
                "option": "S"
              }
            ]
          },
          {
            "sku": "333",
            "regular_price": "10.00",
            "manage_stock": true,
            "stock_quantity": 15,
            "attributes": [
              {
                "name": "Colore",
                "option": "Nero"
              },
              {
                "name": "Taglia",
                "option": "S"
              }
            ]
          },
          {
            "sku": "222",
            "regular_price": "10.00",
            "manage_stock": true,
            "stock_quantity": 15,
            "attributes": [
              {
                "name": "Colore",
                "option": "Nero"
              },
              {
                "name": "Taglia",
                "option": "M"
              }
            ]
          }
        ]
      }
    ]
    fino a sold_individually ok, ma non ho capito poi come dovrei fare per aggiungere altri oggetti/array.
    ad esempio:
    codice:
    let objRes = result.rows;
    objRes['categories'].push(["Abito"]);
    
    console.log(objRes);
    res.send(objRes);
    quel categories non esce.
    come devo fare in questi casi??

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,837
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ad esempio:
    codice:
    let objRes = result.rows;
    objRes['categories'].push(["Abito"]);
    
    console.log(objRes);
    res.send(objRes);
    quel categories non esce.
    Se l'oggetto objRes contiene l'array dei dati, stai accedendo alla proprietà categories dell'array invece che a quella dell'elemento specifico che vuoi modificare; essendo che quella proprietà non esiste, non puoi nemmeno fare il push di un nuovo valore, che quindi non apparirà mai.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Altri link...

  3. #3
    Quote Originariamente inviata da alka Visualizza il messaggio
    Se l'oggetto objRes contiene l'array dei dati, stai accedendo alla proprietà categories dell'array invece che a quella dell'elemento specifico che vuoi modificare; essendo che quella proprietà non esiste, non puoi nemmeno fare il push di un nuovo valore, che quindi non apparirà mai.
    ciao alka!

    grazie per la risposta.
    però non è che abbia ben capito quale potrebbe essere la soluzione .

    devo prima indicare che esistea una proprietà di tipo array?
    codice:
    let objRes = {};
    objRes.categories = [];
    
    objRes = result.rows;
    objRes['categories'].push(["Abito"]);
    
    console.log(objRes);
    res.send(objRes);
    PS: non posso provare al momento perchè ho il server fuori uso.
    però giusto per capire se è li che sto sbagliando, così appena il server viene sistemato vado a botta sicura!

  4. #4
    ok penso di essermi risposto da solo facendo un test con dati fittizzi:
    codice:
    router.get('/test', async (req, res) => {
        let objRes = {};
        objRes.categories = [];
    
        objRes = {'nome': 'mp', 'email': 'm@m.it'};
        objRes['categories'] = ["Abito"];
    
        console.log(objRes);
        res.send(objRes);
    });
    era questo che intendevi??

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,837
    Quote Originariamente inviata da fermat Visualizza il messaggio
    grazie per la risposta.
    però non è che abbia ben capito quale potrebbe essere la soluzione .
    devo prima indicare che esistea una proprietà di tipo array?
    codice:
    let objRes = {};
    objRes.categories = [];
    
    objRes = result.rows;
    objRes['categories'].push(["Abito"]);
    
    console.log(objRes);
    res.send(objRes);
    No, io stavo dicendo che - leggendo il tuo codice - l'ipotesi è quella che tu voglia aggiungere una categoria a uno degli elementi che fanno parte dell'array che contiene tutti gli elementi: se non è così, è bene precisarlo.

    Se le cose stanno invece come ho immaginato, avendo l'array degli elementi, questo vuol dire che il push devi farlo sulle categorie di un elemento specifico, individuato ad esempio tramite la sua posizione; se voglio aggiungere una categoria al primo degli elementi, ad esempio, scriverò qualcosa di simile al seguente:
    codice:
    objRes[0].categories.push("Abito")
    In pratica, accedo al primo elemento - con indice 0 - poi agisco sulla proprietà categories di quell'elemento, che è un array di categorie, e uso push() per aggiungere un nuovo elemento.

    Nel tuo caso, non hai messo l'indice dopo objRes, quindi vuol dire che stai accedendo alla proprietà categories che appartiene all'intero array, e non al singolo elemento, e quella proprietà non esiste: la soluzione non è creare quella proprietà (a meno che io non abbia capito il tuo intento), ma accede alla proprietà giusta.

    Se la spiegazione non è chiara oppure l'obiettivo è diverso da quello pronosticato, spiegati meglio.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Altri link...

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,837
    Quote Originariamente inviata da fermat Visualizza il messaggio
    ok penso di essermi risposto da solo facendo un test con dati fittizzi:
    [...]
    era questo che intendevi??
    I dati di questo esempio sono completamente diversi da quello iniziale, quindi come posso dirti cosa intendevo se mi proponi un nuovo codice che lavora su una struttura differente da quella proposta all'inizio?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Altri link...

  7. #7
    ciao!

    la spiegazione mi è abbastanza chiara, però cerco di sipiegarmi meglio.

    allora, devo costruire un json come quello scritto sopra.
    con la prima query io arrivo qui:
    codice:
    [
      {
        "sku": "K200-200",
        "name": "K200-200",
        "type": "variable",
        "description": "Pantalone 200",
        "sold_individually": true
      }
    ]
    poi, con la seconda query a cascata estraggo le categorie, che devo aggiungere all'oggetto per farlo diventare così:
    codice:
    [
      {
        "sku": "K200-200",
        "name": "K200-200",
        "type": "variable",
        "description": "Pantalone 200",
        "sold_individually": true,
        "categories": [
          "Abito"
        ]
      }
    ]
    con l'esempio di json scritto a mano sembra funzionare.
    ovviamente potrebbe essere diverso dal farlo eseguendo query,ecc.

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,837
    Quote Originariamente inviata da fermat Visualizza il messaggio
    allora, devo costruire un json come quello scritto sopra.
    con la prima query io arrivo qui:
    codice:
    [
      {
        "sku": "K200-200",
        "name": "K200-200",
        "type": "variable",
        "description": "Pantalone 200",
        "sold_individually": true
      }
    ]
    Ok, quindi abbiamo un array di oggetti che rappresentano ciascuno i dati di un prodotto/articolo.

    Ce n'è sempre e solo uno nell'array o possono essere più di uno gli elementi?
    Le categorie devi aggiungerli a tutti gli articoli, oppure solo al primo?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Altri link...

  9. #9
    possono esserci più categorie per ogni prodotto.
    anche nel caso di singola categoria va inserita in un array.
    e le aggiungo ad ogni prodotto.

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,837
    Quote Originariamente inviata da fermat Visualizza il messaggio
    possono esserci più categorie per ogni prodotto.
    anche nel caso di singola categoria va inserita in un array.
    e le aggiungo ad ogni prodotto.
    Quindi dovrai ciclare l'array dei tuoi prodotti, e per ciascuno di essi aggiungere la proprietà categories:

    codice:
    var categories = [..........]; // TODO: Scaricare le categorie da assegnare
    
    for (var i = 0; i < result.rows.length; i++) {
      result.rows[i].categories = categories;
    }
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Altri link...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.