Я установил 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;
Соединение с базой данных в порядке, и у меня нет сообщений об ошибках, но оно не обновляется.
Спасибо!