Skip to content

Question: Ability to retrieve a UID in a mutation resolver #18

@pixeldrew

Description

@pixeldrew

I'm trying to use the uid as a key to mutate data in my resolver, since the uid only lives in the directive and is output via a graphql query i'm having a hard time designing the best way to link the uid back to the data outside of the graph. ie.

const schema = gql`
directive @uid(from: [String]) on OBJECT

type Element @uid(from: ["email", "name"]) {
  name: String!
  email: String!
}

type Query {
  elements: [Element]
}

mutation DeleteElement($uid:String) {
  deleteElement(uid:$uid) : Boolean
}`;

const elements = [{name:"bill", email: "[email protected]"}]
const resolvers = {
  Query: {
    elements: () => elements
  },
  Mutations: {
    deleteElement: (parent, {uid}) => {
      // how am I supposed to find the index in elements without redoing the hash work you do in the resolve function of UniqueIdDirective
   
    }
  }
}

I understand I could redo the work that is done here UniqueId.visitObject()fields[].resolve
but this seems like a hack.

Should this uid be used for anything but caching? Is there another way to resolve the uid outside of the graph? Has anyone done something else to resolve this problem?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions