Skip to content

Nested entity from a custom mutation result fails at runtime #1458

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
eddiesholl opened this issue Dec 18, 2024 · 1 comment
Open

Nested entity from a custom mutation result fails at runtime #1458

eddiesholl opened this issue Dec 18, 2024 · 1 comment

Comments

@eddiesholl
Copy link

eddiesholl commented Dec 18, 2024

Describe the bug
The resolver for a nested entity (batchCode in this case) is failing at runtime when I have selected a list of entities with a child entity. The selection is coming off the result of a custom mutation.

Cannot read properties of undefined (reading 'batchCode')\n    at id .../src/packages/backend/.graphweaver/backend/index.js:768:51)\n    at _listRelationshipField (.../src/node_modules/.pnpm/@[email protected][email protected]/node_modules/@exogee/graphweaver/lib/resolvers.js:380:15)

I believe the problem is at this line of code. The source must be a graphql entity that does not have the 'dataEntity' populated

idValue = id(dataEntityForGraphQLEntity<G, D>(source as any));

To Reproduce
Steps to reproduce the behavior:

  1. Define an entity that has a nested entity
  2. Create a custom mutation that returns a list of the parent entities
  3. The mutation should return microform entity instances
  4. Select the 2 levels of entities

Expected behavior
This should not fail at runtime

Actual behavior
It throws an error

Screenshots or Screencasts

Desktop (please complete the following information):

  • MacOS 14.4

Additional context
@thekevinbrown has a pretty good sense of what is probably wrong here

@thekevinbrown
Copy link
Member

So, the solution here I'm 99% sure is to call fromBackendEntity() on the things you get back before you return them. It could be nice to not have to do this, but I think what we should do now is:

  • Provide a clear example of how to do custom mutations and queries in the examples folder.
  • This should include nested results from a custom mutation and custom query.
  • Update the docs to have a page on this specifically so that someone who wants to implement custom queries and / or mutations understands how to:
    • Register them
    • Build a resolver
    • How to disable all built in queries and mutations for an entity.
    • The security implications (we don't enforce ACLs for custom queries and mutations so they'll need to do it themselves).
    • Joining back to the default resolvers, e.g. here's a custom query that returns tasks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants