0
Ambience:
Prisma
GraphQL
GraphQL Yoga
NodeJS
PostGresql
I’m trying to make a mutation
register a person and an address for that person.
However Person and Address are separate tables, and I’m not able to make the relationship between them.
In the documentation of Prisma
is directed to use the Create
but it doesn’t work, and I always get the same mistake.
Documentation: https://www.prisma.io/docs/prisma-client/basic-data-access/writing-data-JAVASCRIPT-rsc6/#nested-Object-Writes
Error:
{
"data": null,
"errors": [
{
"message": "Variable \"$_v0_data\" got invalid value { cnpj: \"059.852.698.22\", nome: \"Greice K Tomasi\", user: { connect: [Object] }, create: { endereco: [Object] } }; Field value.endereco of required type EnderecoCreateOneInput! was not provided.\nVariable \"$_v0_data\" got invalid value { cnpj: \"059.852.698.22\", nome: \"Greice K Tomasi\", user: { connect: [Object] }, create: { endereco: [Object] } }; Field \"user\" is not defined by type PessoaCreateInput.\nVariable \"$_v0_data\" got invalid value { cnpj: \"059.852.698.22\", nome: \"Greice K Tomasi\", user: { connect: [Object] }, create: { endereco: [Object] } }; Field \"create\" is not defined by type PessoaCreateInput.",
"locations": [],
"path": []
}
]
I’m trying this way:
datamodel.prism
type Pessoa {
id: ID ! @unique
cnpj: String!
nome: String!
endereco: Endereco!
}
type Endereco {
id: ID ! @unique
rua: String!
numero: String
cep: String!
pessoa: Pessoa!
}
schema.graphql
type Mutation {
createPessoa(cnpj: String!, nome: String!, endereco: EnderecoInput!): Pessoa!
}
type Pessoa {
id: ID !
cnpj: String!
nome: String!
endereco: Endereco!
}
type Endereco {
id: ID !
rua: String!
numero: String
cep: String!
}
input EnderecoInput {
rua: String!
numero: String
cep: String!
}
Mutation.js
async function createPessoa (_, args, ctx, info) {
const userId = getUserId(ctx)
return ctx.db.mutation.createPessoa({
data: {
cnpj: args.cnpj,
nome: args.nome,
user: {
connect: { id: userId }
},
endereco: {
rua: args.endereco.rua,
numero: args.endereco.numero,
cep: args.endereco.cep
}
}
})
}
module.exports = {
createPessoa
}
I’m trying to populate Mutation this way:
mutation {
createPessoa (
nome:"Greice K Tomasi",
cnpj:"059.852.698.22",
endereco: {
rua: "Germano Klann",
numero: "547",
cep: "89254220"
}
)
{
nome
}
}
I put the Project in Git in case anyone would rather watch over it:
https://github.com/Denis-String/CursoGraphQL
(To run the project you need Docker)
Steps to start: Inside the project folder:
npm install
Docker-Compose up
In another terminal (with the command docker-compose up
spinning)
- prism deploy