var mysql = require("mysql"); import React from "react"; export async function mySqlQuery(myQuery) { try { console.log("Running query..."); var connection = mysql.createConnection({ host: process.env.MYSQL_HOST, user: process.env.MYSQL_USERNAME, password: process.env.MYSQL_PASSWORD, database: process.env.MYSQL_DATABASE, }); connection.connect(); connection.query(myQuery, function (error, results) { if (error) throw error; const output = results[0].solution; console.log(output); }); connection.end(); } catch (e) { console.error(e.message); // or "throw Error(e.message)", this shows it directly on top of the webpage } }
El botón que uso para llamar a la función (sin () =>
Next.js cree que es un objeto)
<button onClick={() => mySqlQuery("SELECT 1 + 190 / 2 AS solution;")}> SQL PUSH </button>
Probé esto también
<button onClick={async () => await mySqlQuery("SELECT 1 + 190 / 2 AS solution;") } > SQL PUSH </button>
Recibo el siguiente error: Uncaught (in promise) Error: Cannot read properties of undefined (reading 'call')
El código dentro del bloque de try
tiene un error y está viendo que el error se detecta/arroja en el bloque de catch
.
mysql
es un paquete Node.js, no se puede usar en el lado del cliente en el navegador. Debe mover la lógica al backend o a una ruta API, luego realizar una solicitud contra eso en el lado del cliente.