Comments (4)
Not sure whats going on here, can you share the generated GraphQL schema.
Part of the issue with types is that the prisma utils plugin claims to return the full create input with the required relation properties, but the validation schema can't validate that (since they aren't actually part of the input). Working around this would require significantly better type inference for the prisma input fields, which isn't likely to be added soon.
I am not clear on whats happening with the runtime error.
Is the issue that the input is being converted from an array to an object, or is the prisma error just rendering it that way?
the input plugin just ignores it, expecting a keyless object :)
I don't know what this means, what is the input plugin, and where is it "expecting" and keyless object?
having the GraphQL schema output, and the JSON version of the input args received in the resolver might help clarify what the issue is here
from pothos.
UP
The problem is partially solved, and it was my mistake.
- Changing type from array to object [SOLVED]
- You can send an object instead of an array and it will not be considered an error. Although it is specifically described in inputType that only an array is expected.
- It is impossible to validate such an input without an error using zod, because it writes that wrong fields/incorrect types .
As I understand point 3 is difficult to fix now, because of the complexity of type casting.
from pothos.
Changing type from array to object [SOLVED]
Glad you got this figured out
You can send an object instead of an array and it will not be considered an error. Although it is specifically described in inputType that only an array is expected.
If I am understanding this correctly, I think it might be a GraphQL issue, GraphQL automatically allows list inputs to be passed as an object, which it will treat as an list with 1 item, but it also shouldn't cause any issues
It is impossible to validate such an input without an error using zod, because it writes that wrong fields/incorrect types .
I think impossible might be an exaggeration here, I think if you do validate: { schema: { ... } as {} }
it will avoid the type errors, but getting complete type-safety would be challenging.
from pothos.
createMany
is tricky to use correctly. I think you are better of using create
which can create multiple relations:
const CreateUserInput = builder.prismaCreate('User', {
fields: () => ({
email: 'String',
name: 'String',
posts: CreateUserPostsInput,
}),
});
const CreateUserPostsInput = builder.prismaCreateRelation('User', 'posts', {
fields: () => ({
create: CreateUserPostInput,
}),
});
const CreateUserPostInput = builder.prismaCreate('Post', {
name: 'CreateUserPostsInput',
fields: () => ({
title: 'String',
}),
});
builder.mutationType({
fields: (t) => ({
createUser: t.prismaField({
type: 'User',
args: {
data: t.arg({ type: CreateUserInput, required: true }),
},
resolve: (query, _, args) => prisma.user.create({ ...query, data: args.data }),
}),
}
})
mutation {
createUser(data: {
name: "test"
email: "[email protected]"
posts: {
create: [{
title: "post 1"
}, {
title: "post 2"
}]
}
}) {
id
posts {
title
}
}
}
from pothos.
Related Issues (20)
- [Simple Objects Plugin] Simple Interfaces fail to implement other interfaces HOT 4
- Typescript version 4 errors when running pothos v4.0 HOT 2
- Sentry tracing plugin no longer obeys ignoreError option HOT 3
- Typescript Error on type Field When Using after with `withAuth` HOT 1
- After V4 update ts(2322) on InputObjectRef type HOT 1
- Adding fields to @pothos/plugin-relay's `Node` interface HOT 2
- Default nullability in printed schemas is true HOT 6
- prisma list of enums TS bug HOT 6
- Prisma Utils plugin does not have createMany option HOT 2
- Build inputs with auth HOT 2
- Latest plugin-prisma-utils not published on NPM HOT 3
- [Question] Extract query creation to generic method
- [BUG Replay plugin] PothosValidationError: Invalid global ID: RXN0YXRlOjRlYTk5YmYxLTA3MTktNDNkZi04ZTZkLWM4MjA1YjE5MGNhZQ%3D%3D HOT 3
- Merging schema results in infinite loop in v4. (RangeError: Maximum call stack size exceeded at mergeDeep (/Users/*/node_modules/@graphql-tools/utils/cjs/mergeDeep.js:5:19))
- Nullable typescript issue on prisma plugin HOT 8
- Define additional fields for prisma connection object
- How to find operations that have a specific option enabled? HOT 4
- Smart subscription async subscribe HOT 1
- Relay plugin should allow providing `last` argument by itself HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pothos.