MySQL node.js не обновляет локальную базу данных - PullRequest
0 голосов
/ 07 июля 2019

Я установил MySQL для node.js, и мой код не обновляет базу данных. Я запускаю свой код на локальном сервере с node robot.js Что я должен сделать, чтобы мои query() работы?

Я многое изменяю в своем коде (я не знаю всех изменений, которые я сделал) - Удалить mysql.format() - Изменить мой код SQL - Изменить мою функцию обратного вызова в query()

robot.js

/**********CONFIGURATION*********************/
var url_site = 'https://flipp.com/circulaires';
var base_url = 'https://flipp.com/circulaires';
var nom_robot = 'Circulaires';
var base_name_table_rbt = 'rapport_execution_robot';
/*******************************************/

//require
const puppeteer = require('puppeteer');
const cheerio = require('cheerio');
var mysql = require('mysql');
require('events').EventEmitter.defaultMaxListeners = 0;
var waterfall = require('run-waterfall');
var pool_boxy_bd = require('./database_boxy');
var util = require('util');
var tool = require('./tool');
var md5 = require('md5');
var dateFormat = require('dateformat');
var execPhp = require('exec-php');

waterfall([
    async function (callback){
        const browser = await puppeteer.launch({
            headless: true,
            args: ['--no-sandbox', '--disable-setuid-sandbox']
        });

        const page = await browser.newPage();
        await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0');
        await page.setExtraHTTPHeaders({'Accept-Language': 'fr-CA, fr;q=0.9, en;q=0.8'});
        await page.setViewport({ width: 1366, height: 6000});

        await page.goto(url_site, {
            waitUntil: 'networkidle2',
            timeout: 0
        });
        let content = await page.content();
        var $ = cheerio.load(content);
        page.screenshot({path: 'digg.png', fullPage: true});

        var arrayCirculaire = ['Sephora','Forever 21','Zara','Trio Hockey','Old Navy','Club Monaco','Gap','Loft','The Children Place','H&M','Hamster','Napa']

        // console.log('Salut')
        try{
            await $('flipp-flyer-listing-item').each(function(){
                for ( var i = 0, l = arrayCirculaire.length; i < l; i++ ) {
                    var img = $(this).find('img.flyer-thumbnail');
                    let nomCirculaire = '';
                    try{
                        if(img['0'].attribs.alt.indexOf(arrayCirculaire[i]) >= 0){ 
                            var lien = $(this).find('a').attr('href');
                            lien = 'https://flipp.com'+lien;
                            nomCirculaire = arrayCirculaire[i];

                            var query = "UPDATE rapport_execution_robot SET lien_circulaire_interactif=? WHERE nom_robot = ?";
                            var inserts = ['lien','nomCirculaire'];
                            var sql = mysql.format(query, inserts);
                            pool_boxy_bd.query(sql, (err,rows) => {
                              if(err) throw err;

                              console.log('Data received from Db:\n');
                              console.log(rows);
                            });

                            console.log('Update '+ arrayCirculaire[i])
                        }
                    }
                    catch(error){
                        throw new Error(error);
                    }
                }
            });
        }
        catch(error){
            throw new Error(error);
        }
        callback(null, 'one');
        await browser.close();

    },
], function (err, result1) {
    util.promisify(process.exit());
})

database_boxy.js

//https://medium.com/@matthagemann/create-a-mysql-database-middleware-with-node-js-8-and-async-await-6984a09d49f4
var mysql = require('mysql')
var util = require('util')
var config = require('../config_robot/config');

var pool_boxy_bd = mysql.createPool(config.databaseOptions);

pool_boxy_bd.getConnection((err, connection) => {
    if (err) {
        if (err.code === 'PROTOCOL_CONNECTION_LOST') {
            console.error('Database connection was closed.')
        }
        if (err.code === 'ER_CON_COUNT_ERROR') {
            console.error('Database has too many connections.')
        }
        if (err.code === 'ECONNREFUSED') {
            console.error('Database connection was refused.')
        }
    }
    else{
        console.log('Connecter à la BD!')
    }

    if (connection) connection.release()

    return
})

// Promisify for Node.js async/await.
pool_boxy_bd.query = util.promisify(pool_boxy_bd.query)
module.exports = pool_boxy_bd;

Соединение с базой данных в порядке, и у меня нет сообщений об ошибках, но оно не обновляется.

Спасибо!

...