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:passw@IP: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 Puntos63580

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.

Otras Preguntas y Respuestas


...

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

Conecta