Giter Club home page Giter Club logo

Comments (4)

MattMcFarland avatar MattMcFarland commented on May 2, 2024 1

Hey!

I think this is a great question and interesting problem. I wanted to share how I've solved this especially given some constraints where using flow-type was not possible. In no way I'm saying this is the best way of doing it, but nonetheless I hope this helps.

  1. You can check the constructor name:
    http://jsbin.com/liwiwomayu/edit?js,console
  const Foo = function () {};

  let foo = new Foo();

  console.log(foo.constructor.name);

I hope that is convincing enough, but you can actually find out if something is a GraphQLEnum, GraphQLList, GraphQLObjectType, etc, etc.

But I won't stop here!

Another interesting thing is you can see a graphql object's type config like this:

console.log(someGraphQLObject._typeConfig);

// That will actually output something very close to the code you wrote

// the type name:
console.log(myGqlObject._typeConfig.name);

You could always use typeof with a bunch of ampersands to do the trick as well. you could also try using instanceof as well but I think constructor.name is easier to use.

Another way is creating a special tag like graphType - in your database for every object and pass it into the Type Resolver function as well.

Hope this helps and honestly I'd love to see what others have done to solve this as well

from graphql-relay-js.

iamchenxin avatar iamchenxin commented on May 2, 2024 1

@MattMcFarland Thank you , im finding some way to do a static check.
In abstract concept,this problem is like this:
relayResolver <- (<-Graphql->) -> relayResolver, where Graphql is a black box. and relayResolver use a subset of Graphql's resolver. So theoretically, it should be a easy static check .
If in a static language ,it is,and should have a standard Template style to solve this. But with javascript, graphql's code separate source and args's type in many places.
I wonder if there is some inner technology like React's $ flow method to do this?
Or maybe i should use any type to make this part as a black-box of Graphql ? (seems its a bad idea).
there is a graphql-relay fork with flow-typed Graphql .

from graphql-relay-js.

sibelius avatar sibelius commented on May 2, 2024

any more work on this?

from graphql-relay-js.

IvanGoncharov avatar IvanGoncharov commented on May 2, 2024

Sorry for the late reply.
This issue is not specific to relay-style mutations and already discussed in the graphql-js repo.

from graphql-relay-js.

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.