entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Problema con queries en PostgreSQLy Node

Hola a todos,

estoy comenzando con el mundo de las bases de datos y he escogido PostgreSQL para comenzar. Para aprender he planteado el siguiente ejercicio, creemos una base de datos en la que yo pueda hacer consultas a traves de Node sobre los integrantes de un equipo de fútbol.

Por ahora tengo una base de datos llamada "Equipo" donde he creado varias tablas. Una de ellas se llama "Jugadores" y contiene las columnas ID(Integer), Name(character varying), Age(Integer) y he rellenado las columnas con datos manualmente.

El código que tengo por ahora es este:

const express = require('express');
var pgp = require('pg-promise')( /*options*/ )
const app = express();

var db = pgp('postgres://postgres:[email protected]:Puerto/Equipo');

app.get('/', (req, res) => {
    console.log(req.user_id);
    db.any('SELECT * FROM public."Jugadores" WHERE id=$1' [1])
        .then(function(data) {
            // success;
            console.log("data : ", data);
            res.send(data);
        })
        .catch(function(error) {
            // error;
            console.log("error.....");
        });

});

Esto me devuelve en el buscador:

[{"ID":1,"Name":Raul,"Age":19}]

Sin embargo cuando en la query tomo como parámetro de búsqueda el nombre, el resultado es []. Es decir esto no me funciona:

app.get('/', (req, res) => {
    console.log(req.user_id);
    db.any('SELECT * FROM public."Jugadores" WHERE Name=$1', ['Raul'])
        .then(function(data) {
            // success;
            console.log("data : ", data);
            res.send(data);
        })
        .catch(function(error) {
            // error;
            console.log("error.....");
        });

});

¿Alguien me podría explicar porqué puedo realizar búsquedas con el ID pero si uso los valores de Name no?

Un saludo
Gracias de antemano!

1 Respuesta

2votos

carlossevi Puntos63430

Es raro que en el código que dices que funciona, lo haga con esta línea a la que le falta una coma ,:

db.any('SELECT * FROM public."Jugadores" WHERE id=$1' [1])

Debería ser:

db.any('SELECT * FROM public."Jugadores" WHERE id=$1', [1])

Incluso, según la documentación para parámetros individuales debería ser sin array:

db.any('SELECT * FROM public."Jugadores" WHERE id=$1', 1)

Siguiendo el mismo formato, la línea que no te devuelve respuestas debería ser:

// db.any('SELECT * FROM public."Jugadores" WHERE Name=$1', ['Raul'])
db.any('SELECT * FROM public."Jugadores" WHERE Name=$1', 'Raul')

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Otras Preguntas y Respuestas


Actividad Reciente

  • Freda0370183 ganó una medalla hace 5 horas

    Club de los 100 - Recibió un total de 100 puntos
  • NilaPilgrim4 ganó una medalla hace 13 horas

    Humano Verificado - Verificó su email
  • ErwinImhoff1 ganó una medalla hace 1 día

    Club de los 100 - Recibió un total de 100 puntos
  • FelipeMedel ganó una medalla hace 1 día

    Buen Comentario - Comment received +2 upvote
  • FelipeMedel ganó una medalla hace 1 día

    Renovador - Recibió medalla Buena Respuesta en res…
  • FelipeMedel ganó una medalla hace 1 día

    Buena Respuesta - Recibió +1 votos en respuesta
  • FelipeMedel ganó una medalla hace 1 día

    Buen Comentario - Comment received +2 upvote
  • FelipeMedel ganó una medalla hace 1 día

    Buena Respuesta - Recibió +1 votos en respuesta
  • EllPanda ganó una medalla hace 1 día

    Veterano - Primera visita hace más de 180 días
  • EllPanda ganó una medalla hace 1 día

    Regular - Primera visita hace más de 90 días
...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta