es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener datos de Snowflake a node.js

Estoy tratando de diseñar una API utilizando Snowflake y Nodejs. Para eso estoy utilizando las siguientes cosas:

Express
ejs
snowflake-sdk (módulo de nodejs)

Quiero obtener datos de Snowflake y mostrarlos en mi página web ejs. Por favor, ayúdenme si alguien ha obtenido datos y los ha mostrado en una página web utilizando nodejs y snowflake.

Este es mi archivo server.js

const express = require("express");
const app= express();
const sql = require("./snowflake");

app.use(express.static("public"));
app.use(express.urlencoded({ extended: true}));
app.set("view engine","ejs");

app.get("/", function(request,response){
    response.render("index");
});

app.get("/request/:core", async function(request,response){
    let core=await sql.getCore(request.params.core_name);
    response.render("request",{request: core});
});

const http = require('http');
const port=3000;
const server=http.createServer(function(req,res){
})
const listener = app.listen(port,function(error){
    if(error){
        console.log("Algo salió mal debido a:", error);
    }
    else{
        console.log('El servidor está escuchando el puerto '+port);
    }
})

Este es mi archivo database.js. Puedo conectarme a Snowflake y ejecutar consultas, pero no entiendo cómo obtener el resultado de la consulta en la página web ejs.

const { initParams } = require('request');
const sql = require('snowflake-sdk');

const connection = sql.createConnection({

    account: 'nombre_de_cuenta',
    authenticator: 'SNOWFLAKE',
    username: 'nombre_de_usuario',
    password: 'contraseña',
    database: 'base_de_datos',
    schema: 'esquema'

});

module.exports.getCore = async() =>{
    connection.execute({
    sqlText: 'Select columna from Nombre_de_tabla',
    complete: async function(err,stmt,rows){
        let pool= await sql.connect();     
        return rows;
    }
})
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener datos de Snowflake y mostrarlos en tu página web ejs utilizando Nodejs, puedes utilizar el módulo snowflake-sdk en combinación con el motor de plantillas ejs y el framework Express.

    Primero, asegúrate de haber instalado estos módulos utilizando el gestor de paquetes npm ejecutando el siguiente comando en el directorio de tu proyecto:

    npm install express ejs snowflake-sdk
    

    Luego, en tu archivo server.js, puedes definir la aplicación Express y configurar tus rutas para renderizar las plantillas ejs. También puedes definir una ruta para obtener datos de Snowflake utilizando una consulta SQL y pasarla como parámetro a la plantilla ejs:

    const express = require("express");
    const app = express();
    const sql = require("./database");
    
    app.use(express.static("public"));
    app.use(express.urlencoded({ extended: true }));
    app.set("view engine", "ejs");
    
    app.get("/", function (request, response) {
      response.render("index");
    });
    
    app.get("/request/:core", async function (request, response) {
      let core = await sql.getCore(request.params.core_name);
      response.render("request", { request: core });
    });
    
    const listener = app.listen(3000, function (error) {
      if (error) {
        console.log("Algo salió mal debido a:", error);
      } else {
        console.log("El servidor está escuchando en el puerto 3000");
      }
    });
    

    En tu archivo database.js, puedes definir la función para ejecutar la consulta de Snowflake y devolver el resultado en una promesa:

    const sql = require("snowflake-sdk");
    
    const connection = sql.createConnection({
      account: "nombre_de_cuenta",
      authenticator: "SNOWFLAKE",
      username: "nombre_de_usuario",
      password: "contraseña",
      database: "base_de_datos",
      schema: "esquema",
    });
    
    module.exports.getCore = async (core_name) => {
      return new Promise((resolve, reject) => {
        connection.execute({
          sqlText: `SELECT column FROM Table_name WHERE core_name = '${core_name}'`,
          complete: function (err, stmt, rows) {
            if (err) reject(err);
            resolve(rows);
          },
        });
      });
    };
    

    En el código anterior, definimos la función getCore que toma un parámetro core_name y ejecuta una consulta de Snowflake para obtener los datos de la base de datos. Envolvemos la función connection.execute en una Promesa para asegurarnos de que el resultado se devuelva de forma asíncrona.

    En tu archivo de plantilla ejs, puedes utilizar el parámetro request pasado desde el controlador de ruta para mostrar los datos de Snowflake en la página web. Por ejemplo, en tu archivo request.ejs:

    <!DOCTYPE html>
    <html>
      <head>
        <title>Página de solicitud</title>
      </head>
      <body>
        <h1>Mi solicitud: <%= request %></h1>
      </body>
    </html>
    

    En el código anterior, utilizamos la sintaxis de plantilla ejs para mostrar el parámetro request pasado desde el controlador de ruta. Puedes personalizar la plantilla según tus necesidades para mostrar tus datos de Snowflake.

    En resumen, para obtener datos de Snowflake y mostrarlos en tu página web ejs utilizando Nodejs, puedes utilizar el módulo snowflake-sdk, configurar una aplicación Express con plantillas ejs, definir una ruta para obtener datos de Snowflake y pasar los datos a la plantilla ejs para renderizarlos en la página.

Comments are closed.