Node.js: importare i prodotti di WooCommerce in MongoDB usando le REST API

Node.js: importare i prodotti di WooCommerce in MongoDB usando le REST API

In questo articolo vedremo come importare i prodotti di WooCommerce in MongoDB. Per capire al meglio le interazioni tra Node.js e Mongo useremo il driver ufficiale per MongoDB.

Installiamo il driver:

npm install mongodb --save

Quindi creiamo una classe base che gestirà solamente la connessione al database:

'use strict';
class db {
constructor() {
    this.client = require('mongodb').MongoClient;
}
connect() {
    return this.client.connect('mongodb://utente:password@127.0.0.1/db');
}
}
module.exports = db;

Ora definiamo questa classe nella funzione middleware della nostra applicazione:

app.use( (req, res, next ) => {
  req.db = new db();
  next();
 });

Creiamo dalla shell di Mongo la collezione che ospiterà i prodotti di WooCommerce:

db.createCollection('products');

A questo punto creiamo la route che accetterà una richiesta in POST che effettuerà l'importazione.

La procedura è semplice: reperiamo l'elenco dei prodotti di WooCommerce tramite API ottenendo un array di oggetti JSON. Quindi prima di importare ciascun prodotto verifichiamo che questo non sia già presente usando l'ID del prodotto così come viene restituito da WooCommerce:

importProducts: async (req, res) => {
    try {
        let data = await req.API.products();
        let products = data.products;
        req.db.connect().then(client => {
            let db = client.db('db');
            let prods = db.collection('products');
            products.forEach(product => {
                let id = product.id;
                prods.count({id: id}, (err, num) => {
                    if(!err) {
                        if( num === 0 ) {
                            prods.insert(product);
                        }
                    }
                });

            });
            res.redirect('/dashboard/import/?imported=1');
        });
    } catch(err) {
        res.redirect('/dashboard/import');
    }
}

Il driver di MongoDB non offre una connessione persistente come nel caso di Mongoose. Dobbiamo creare un'istanza del client, selezionare il database e quindi le collezioni. Da qui possiamo usare i metodi loro associati.

Conclusione

Ora abbiamo salvato i prodotti di WooCommerce nel nostro database. In seguito vedremo come gestirli.

Torna su