Giter Site home page Giter Site logo

Comments (6)

yoavkarako avatar yoavkarako commented on August 16, 2024 2

I've put together a makeshift solution to integrate the package with graphql-tools.
Unfortunately, it still needs work as the introspection doesn't update correctly, which screws with graphiql. It's more a prototype than anything else

import { makeExecutableSchema, SchemaDirectiveVisitor } from "graphql-tools";

class FilterTypeDirective extends SchemaDirectiveVisitor {
    visitFieldDefinition(field) {
        const type = field.args[0].type;
        const queryArgs = getGraphQLQueryArgs(field.args[0].type);
        field.args = Object.keys(queryArgs).map(key => ({
            ...queryArgs[key],
            name: key
        }));
        field.resolve = getMongoDbQueryResolver(type, field.resolve);
    }
};

const typeDefs = `
type Name {
    first: String
    last: String
}

type Person {
    name: Name
    age: Int
}

type Query {
    people(type: Person): [Person] @FilterType
}
`;

const resolvers = {
    Query: {
        async people(filter, projection, options, obj, args, context) {
            return await context.db.collection('persons').find(filter, projection, options).toArray();
        }
    }
};

let schema = makeExecutableSchema({
    typeDefs,
    resolvers,
    schemaDirectives: {
        FilterType: FilterTypeDirective
    }
});

You need to add the FilterTypeDirective directive over the main field, and add the main type as an argument to that field under the name type. The resolver is what you would put in place of the callback arg in the getMongoDbQueryResolver.

I hope to have a complete solution to this issue added to the package at some point due to graphql-tools's popularity. Anyone familiar with graphql-tools who knows a better way to achieve this (Without screwing with the introspection/cleaner) is welcome to chip in.

from graphql-to-mongodb.

daniele-zurico avatar daniele-zurico commented on August 16, 2024

@Jscott388 have you been able to use it in apollo-server? I'm trying to understand if I can use it

from graphql-to-mongodb.

Jscott388 avatar Jscott388 commented on August 16, 2024

No I haven’t figured it out.

from graphql-to-mongodb.

dohomi avatar dohomi commented on August 16, 2024

I came across this package - it would be nice to see an integration with graphql-yoga to build it directly upon a server. I wrote a small package with authentication, subscription and CRUD here: https://github.com/dohomi/graphql-yoga-mongodb
It would be nice to extend it with graphql-to-mongodb just for better usability out of the box

from graphql-to-mongodb.

ansarizafar avatar ansarizafar commented on August 16, 2024

Any update on this issue?

from graphql-to-mongodb.

yoavkarako avatar yoavkarako commented on August 16, 2024

#37 done

from graphql-to-mongodb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.