anon
anon

Reputation:

GraphQLError: Syntax Error: Expected Name, found ":"

I am trying to Prisma along side with Apollo Server and I keep getting this error

GraphQLError: Syntax Error: Expected Name, found ":"

this is the index.ts file

import { PrismaClient } from '@prisma/client';
import { ApolloServer } from 'apollo-server';
import { typeDefs } from './schema/schema';
import { Query } from './resolvers/Query';
import { Mutation } from './resolvers/Mutation';

const prisma = new PrismaClient();
const server = new ApolloServer({
  typeDefs,
  resolvers: {
    Query,
    Mutation,
  },
  context: {
    prisma,
  },
});

server.listen().then(({ url }: any) => {
  console.log(`Server is running on ${url}`);
});

this is the schema.ts file

const { gql } = require('apollo-server');

export const typeDefs = gql`
  type Query {
    getProducts: [Product!]!
  }

  type Mutation {
    addProduct(input: addProductInput): Boolean!
  }

  type Product {
    name: String!
    price: Float!
    description: : String!
  }

  input addProductInput {
    name: String!
    price: Float!
    description: : String!
  }
`;

this is the Query.ts file in the resolvers folder

export const Query = {
  getProducts: async (parent: any, args: any, { prisma }: any) => {
    return await prisma.products.findMany();
  },
};

this is the Query.ts file in the resolvers folder

export const Mutation = {
  addProduct: async (parent: any, { input }: any, { prisma }: any) => {
    const productData = {
      name: input.name,
      price: input.price,
      description: input.description,
    };

    await prisma.products.create({
      data: productData,
    });

    return true;
  },
};

and lastly this is the Product model in schema.prisma file

model Product {
  @@map(name: "products")
  id Int @id @default(autoincrement())
  name String
  price Float
  description String
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

I have done some researches and all I got is that might be a missing bracket or a curly bracket, but I reviewed my code multiple times and did not find any mistakes.

Upvotes: 0

Views: 8910

Answers (1)

Liel Fridman
Liel Fridman

Reputation: 1198

In the schema definition, pay close attention to the Product type and addProductInput:

  type Product {
    name: String!
    price: Float!
    description: : String!
  }

  input addProductInput {
    name: String!
    price: Float!
    description: : String!
  }
`;

Are you sure the description fields should have two colons? I think they shouldn't have the middle one, and just be like description: String!

Upvotes: 1

Related Questions