0

I want to have a rootquery that returns every row within my table. But currently when I call that rootquery I only receive null. But one of my rootquery that only returns one row with a specific id does work. So where i am going wrong?

Rootquery's:

This one works

aanvraag:{
        type: AanvraagType, 
        args:{id: {type: GraphQLID}},
        resolve(parentValue, args){
            const query = `SELECT * FROM aanvraag where id=${args.id}`;
            return db.conn.one(query)
                .then(data => {
                    return data;
                })
                .catch(err => {
                    return 'Error is: ', err
                });
        }
    },

This one doesn't work

   aanvragen:{
        type: AanvraagType,
        resolve(parentValue, args){
            const query = 'SELECT * from aanvraag';
            return db.conn.many(query)
                .then(data => {
                    return data;
                })
                .catch(err => {
                    return 'Error is: ', err
                });
        }
    }

This is the whole file if someone needs it:

const graphql = require('graphql');
const pgp = require('pg-promise')();
const axios = require('axios');
const db = {}
var cn = {
    host: 'localhost', // server name or IP address;
    port: 5432,
    database: 'admin',
    user: 'admin',
    password: 'admin123'
};

db.conn = pgp(cn);

const {
    GraphQLObjectType,
    GraphQLID,
    GraphQLString,
    GraphQLSchema
} = graphql;


const TeamlidType = new GraphQLObjectType({
    name: 'Teamlid',
    fields: {
        id: { type: GraphQLID },
        email: { type: GraphQLString },
        naam: { type: GraphQLString }
    }
})

const ProjectType = new GraphQLObjectType({
    name: 'Project',
    fields:{
        id: {type: GraphQLID},
        naam: { type: GraphQLString },
        type: { type: GraphQLString },
        lead_naam: { type: GraphQLString },
        lead_email: { type: GraphQLString },
        teamlid:{
            type: TeamlidType,
            resolve(parentValue, args){
                console.log(parentValue.id);
                const query = `SELECT * FROM teamlid WHERE project_id=${parentValue.id}`;
                return db.conn.many(query)
                .then(data => {
                   return data;
                })
                .catch(err => {
                   return 'The error is', err;
                });
            }
        }
    }
})

const AanvraagType = new GraphQLObjectType({
    name: 'Aanvraag', 
    fields:{
        id: {type: GraphQLID},
        naam: { type: GraphQLString },
        email: { type: GraphQLString },
        divisie: { type: GraphQLString },
        afdeling: { type: GraphQLString },
        team: { type: GraphQLString },
        project:{
            type: ProjectType,
            resolve(parentValue, args){
                const query = `SELECT * FROM project WHERE aanvraag_id=${parentValue.id}`;
                return db.conn.one(query)
                .then(data => {
                   return data;
                })
                .catch(err => {
                   return 'The error is', err;
                });
            }
        }
    }
})

const RootQuery = new GraphQLObjectType({
    name: 'RootQueryType',
    fields: {
        teamlid: {
            type: TeamlidType,
            args: { id: { type: GraphQLID } },
            resolve(parentValue, args) {
                const query = `SELECT * FROM teamlid WHERE id=${args.id}`;
                return db.conn.one(query)
                    .then(data => {
                        return data;
                    })
                    .catch(err => {
                        return 'The error is', err;
                    });
            }
        },
        aanvraag:{
            type: AanvraagType, 
            args:{id: {type: GraphQLID}},
            resolve(parentValue, args){
                const query = `SELECT * FROM aanvraag where id=${args.id}`;
                return db.conn.one(query)
                    .then(data => {
                        return data;
                    })
                    .catch(err => {
                        return 'Error is: ', err
                    });
            }
        },
        project:{
            type: ProjectType, 
            args:{id: {type: GraphQLID}},
            resolve(parentValue, args){
                const query = `SELECT * FROM project where id=${args.id}`;
                return db.conn.one(query)
                    .then(data => {
                        return data;
                    })
                    .catch(err => {
                        return 'Error is: ', err
                    });
            }
        },
        aanvragen:{
            type: AanvraagType,
            resolve(parentValue, args){
                const query = 'SELECT * from aanvraag';
                return db.conn.many(query)
                    .then(data => {
                        return data;
                    })
                    .catch(err => {
                        return 'Error is: ', err
                    });
            }
        }
    }
})

module.exports = new GraphQLSchema({
    query: RootQuery,
    mutation
})
djamaile
  • 695
  • 3
  • 12
  • 30

1 Answers1

0

So I already found my answer. I had to wrap 'aanvraag' in an GraphQLList. So this would work:

   aanvragen:{
        type: GraphQLList(AanvraagType),
        resolve(){
            const query = 'SELECT * from aanvraag';
            return db.conn.many(query)
                .then(data => {
                    return data;
                })
                .catch(err => {
                    return 'Error is: ', err
                });
        }
    }

I am new to GrapQL but i hope this will help someone in the future.

djamaile
  • 695
  • 3
  • 12
  • 30