Node.js: visualizzare un singolo prodotto importato da WooCommerce tramite le REST API

Node.js: visualizzare un singolo prodotto importato da WooCommerce tramite le REST API

In questo articolo vedremo come visualizzare i dettagli di un singolo prodotto importato da WooCommerce nel nostro applicativo.

Per visualizzare un singolo prodotto abbiamo bisogno di aggiungere un parametro ad una route specifica in ExpressJS contenente l'ID numerico del prodotto:

app.get('/dashboard/view/:id', routes.singleProduct);

:id è il parametro variabile che fa parte dell'oggetto request.params gestito da Express. Una volta ottenuto l'ID e convertitolo in intero per onorare la coerenza dei dati con MongoDB, possiamo usarlo per reperire un prodotto:

singleProduct: (req, res) => {
    let id = parseInt(req.params.id, 10);
        req.db.connect().then(client => {
            let db = client.db('db');
            let products = db.collection('products');
            products.findOne({id: id}).then(prod => {
                res.render('single-product', {
                    title: prod.title + ' | WooCommerce Node',
                    product: prod
                });
            }).catch(err => {
                res.redirect('/dashboard');
            });
        }).catch(err => {
           res.redirect('/dashboard');
        });
}

Il metodo .findOne(), come gli altri metodi delle collezioni, se usato senza una funzione di callback restituisce una Promise. Questo metodo restituisce un singolo risultato da una collezione di MongoDB.

Il parametro passato deve necessariamente essere convertito in un intero poiché internamente MongoDB effettua un test di compatibilità tra i dati.

Poiché il parametro della route è sempre una stringa, dobbiamo convertirlo in intero se non vogliamo che la Promise venga rigettata.

Volendo semplificarci il lavoro possiamo effettuare una validazione del parametro direttamente nel path della route:

/dashboard/view/:id([0-9]+)

In questo modo siamo sicuri che il parametro dovrà essere una stringa di tipo numerico grazie all'espressione regolare associatagli che ci evita di dover validare il suo valore nella routine della nostra route.

Conclusione

Abbiamo visto un modo semplice per visualizzare i dettagli di un prodotto usando i metodi delle collezioni del driver per MongoDB. Come appare evidente, la validazione e la coerenza dei dati è un requisito fondamentale.

Torna su