Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

538
Vistas
How do I integrate MYSQL with Sveltekit / nodejs

Typically for a nodejs project I just follow this standard example:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'me',
  password : 'secret',
  database : 'my_db'
});
 
connection.connect();
 
connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
  if (error) throw error;
  console.log('The solution is: ', results[0].solution);
});
 
connection.end();

Sveltekit doesn't allow the var mysql = require('mysql'); So I tried replacing that with import { mysql } from 'mysql'; Which also doesn't work. Not sure if anyone has experience with this and can direct me to understand my mistake.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

1. Install mysql2 package

npm install --save mysql2

2. Setup MySQL connection

lib/db/mysql.js

import mysql from 'mysql2/promise';

export const mysqlconn = await mysql.createConnection({ 
    host: '<myhost>',
    user: 'root',
    password: 'mypassword',
    database: 'mydatabase'
});

3. Create an API endpoint

routes/api/read.js

import { mysqlconn } from '$lib/db/mysql';


export async function get() {
    
    let results = await mysqlconn.query('SELECT * FROM mytable')
        .then(function([rows,fields]) {
            console.log(rows);
            return rows;
        });
    
    return {
        body: results
    }
}

UPDATE

Which is better? The above code or this code?

1. Install mysql2 package

npm install --save mysql2

2. Setup MySQL connection

lib/db/mysql.js

import mysql from 'mysql2/promise';

let mysqlconn = null;

export function mysqlconnFn() {

    if (!mysqlconn) {
        mysqlconn = mysql.createConnection({ 
            host: '<myhost>',
            user: 'root',
            password: 'mypassword',
            database: 'mydatabase'
        });
    }

    return mysqlconn;
}

3. Create an API endpoint

routes/api/read.js

import { mysqlconnFn } from '$lib/db/mysql';


export async function get() {

    let mysqlconn = await mysqlconnFn();

    let results = await mysqlconn.query('SELECT * FROM mytable')
        .then(function([rows,fields]) {
            console.log(rows);
            return rows;
        });
    
    return {
        body: results
    }
}

Update 2

You can also set up MySQL connection in hooks.

Refer: https://github.com/sveltejs/kit/issues/1538#issuecomment-1002106271

about 4 years ago · Juan Pablo Isaza Denunciar

0

may something like knex works?

// in /src/lib/db.js
import knex from 'knex'

export default knex({
  client: 'mysql',
  version: '5.7',
  connection: {
    host: '127.0.0.1',
    port: 3306,
    user: 'root',
    password: '',
    database: 'library'
  },
})

anywhere in endpoint

// in /src/routes/api/books.js
import db from '$lib/db'

// get all books
export const get = async request => {
  const books= await db.select().from('books')

  if (voters) {
    return {
      body: {
        books
      }
    }
  }
  // else
}

// add a book
export const post = async ({ body }) => {
  const added = await db
    .insert({
      title: body.get('title'),
      author: body.get('author'),
    // .insert(JSON.parse(body)) // or you can send JSON.stringfy(dataObject)
    .into('admins')

  if (added) {
    return {
      status: 200,
      body: {
        message: 'A book added successfully'
      }
    }
  }
  // else
}

you can fetch it the way you like,,

this is may not appropriate answer, i just found it last weekend

  • about knex : https://knexjs.org/
  • about endpoint : https://kit.svelte.dev/docs#routing-endpoints
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda