Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Importare i prodotti di WooCommerce in MongoDB

Scopriamo come importare i prodotti di WooCommerce in MongoDB studiando le interazioni tra NodeJS e Mongo tramite il driver di quest'ultimo.
Scopriamo come importare i prodotti di WooCommerce in MongoDB studiando le interazioni tra NodeJS e Mongo tramite il driver di quest'ultimo.
Link copiato negli appunti

In questo capitolo vedremo come importare i prodotti di WooCommerce in MongoDB. Per capire al meglio le interazioni tra NodeJS 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.

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

Ti consigliamo anche