Merhabalar bir bot yapıyorum veri çekiyor geliyor veritabanına yazıyor. Basit anlatımı bu şekilde ama sorunum şu ben verileri vs alıyorum aslında sorun veritabanına kaydetmede neden olduğunu anlayamadım.

Kullanılan : puppeteer
Dosya Yapım :
botjs/
|-- controllers/
| |-- product.js
|
|-- database/
| |-- db.js
|
|-- productBot/
| |-- bot.js
|
|-- routes/
| |-- product.js
|
|-- index.js

Bot.js içeriği
// productBot/bot.js
const puppeteer = require('puppeteer');
const { createproduct, queryproduct } = require('../controllers/product.js');
const scrape = async () => {
    try {
        const queryResults = await queryproduct();
        const pznNumbers = queryResults.map(result => result.query_pzn);
        console.log("Ne varmış : ",pznNumbers);
        for (const pznno of pznNumbers) {
            await scrapeDetails(pznno);
        }
        console.log("Tüm scrape işlemleri tamamlandı");
    } catch (error) {
        console.error("Hata oluştu:", error);
    }
};
const scrapeDetails = async (pznno) => {
    const url = `url=${pznno}`;
    const browser = await puppeteer.launch({ headless: 'new' });
    const page = await browser.newPage();
    await page.goto(url);
    try {
        const tableSelector = 'table.products';
        await page.waitForSelector(tableSelector);
        const products = await page.$$eval(`${tableSelector} tbody tr`, rows => {
            return rows.map(row => {
...... Burada çekilen veriler var
                };
                return productDetails;
            });
        });
        const jsonData = JSON.stringify(products, null, 2);
        createproduct(jsonData);
        console.log('createproduct fonksiyonu çağrıldı:', jsonData);
    } catch (error) {
        console.error(`Hata: Tablo bulunamadı - ${error.message}`);
    }
    browser.close();
}
scrape();
verikaydetme yeri.
// controllers/product.js içeriği
const mysql = require('mysql');
const dbConnection = require('../database/db.js');
const productData = require('../productBot/bot.js')
const queryproduct = () => {
    return new Promise((resolve, reject) => {
        const queryData = "SELECT * FROM tablo_pzn";
        dbConnection.query(queryData, (err, results) => {
            if (err) {
                reject(err);
            } else {
                resolve(results);
            }
        });
    });
};
const getproduct = (req, res) => {
    try {
        const query = 'SELECT * FROM ilaclar';
        dbConnection.query(query, (err, results) => {
            if (err) {
                console.error('Sorgu hatası:', err.stack);
                return res.status(500).json({ error: 'Veritabanı sorgusu gerçekleştirilemedi' });
            }
            console.log('Sorgu Sonuçları:', results);
            // Sorgu sonuçları
            return res.json({
                status: "OK",
                message: "İlaç bilgileri başarıyla alındı.",
                data: results
            });
        });
    } catch (error) {
        console.error('İşlem hatası:', error);
        return res.status(500).json({ error: 'Bir hata oluştu' });
    }
}
const createproduct = (productData) => {
    try {
        const productDetails = JSON.parse(productData);
        console.log("Create Product productDetails :",productDetails);
        const insertQuery = 'INSERT INTO ilaclar (title, prescription, unit, origin, manufacturer, price, unitPrice, link) VALUES (?, ?, ?, ?, ?, ?, ?, ?)';
        const values = [
... gelen verilerin içeriği
        ];
        dbConnection.query(insertQuery, values, (err, results) => {
            if (err) {
                console.error('Veri eklenirken hata oluştu:', err.stack);
                return;
            }
            console.log('Veri başarıyla eklendi.', results.insertId);
        });
    } catch (error) {
        console.error('JSON dönüşüm hatası:', error);
    }
};
module.exports = { getproduct, createproduct, queryproduct };