Bird
Raised Fist0
GraphQLquery~20 mins

Prisma ORM with GraphQL - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Prisma GraphQL Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ query_result
intermediate
2:00remaining
What is the output of this Prisma query in GraphQL?

Given a Prisma model User with fields id, name, and age, what will this GraphQL query return?

query {
  users(where: { age: { gt: 30 } }) {
    id
    name
  }
}
GraphQL
model User {
  id   Int    @id @default(autoincrement())
  name String
  age  Int
}
ASyntaxError: Invalid query
B[{ id: 2, name: "Bob" }]
C[]
D[{ id: 1, name: "Alice" }, { id: 3, name: "Charlie" }]
Attempts:
2 left
💡 Hint

Think about filtering users older than 30.

📝 Syntax
intermediate
2:00remaining
Which option correctly defines a Prisma schema for a Post with a relation to User?

Choose the correct Prisma schema snippet that defines a Post model with a relation to User via authorId.

A
model Post {
  id       Int    @id @default(autoincrement())
  title    String
  authorId Int
  author   User   @relation(fields: [authorId], references: [id])
}
B
model Post {
  id       Int    @id @default(autoincrement())
  title    String
  authorId Int @relation
  author   User
}
C
model Post {
  id       Int    @id
  title    String
  authorId Int
  author   User
}
D
model Post {
  id       Int    @id @default(autoincrement())
  title    String
  author   User   @relation(fields: [authorId])
}
Attempts:
2 left
💡 Hint

Relations require specifying both fields and references.

❓ optimization
advanced
2:00remaining
How to optimize fetching posts with their authors in Prisma GraphQL query?

You want to fetch all posts with their authors' names efficiently. Which Prisma client query is best?

Aprisma.post.findMany({ include: { author: true } })
Bprisma.post.findMany({ select: { title: true } })
Cprisma.post.findMany({ where: { author: { name: { contains: "A" } } } })
Dprisma.post.findMany()
Attempts:
2 left
💡 Hint

Including related data avoids extra queries.

🔧 Debug
advanced
2:00remaining
What error does this Prisma GraphQL mutation cause?

Given this mutation, what error will occur?

mutation {
  createUser(data: { name: "Eve", age: "twenty" }) {
    id
    name
  }
}
ARuntimeError: User already exists
BSyntaxError: Invalid mutation syntax
CTypeError: age must be an Int, not a String
DNo error, user created successfully
Attempts:
2 left
💡 Hint

Check the data types in the mutation.

🧠 Conceptual
expert
2:00remaining
Which statement best describes Prisma's role in a GraphQL API?

Choose the most accurate description of how Prisma works with GraphQL.

APrisma is a frontend library that renders GraphQL queries in the browser.
BPrisma acts as an ORM that maps GraphQL queries directly to database operations, simplifying data fetching and mutations.
CPrisma replaces GraphQL and handles all API requests internally without a schema.
DPrisma only works with REST APIs and cannot be used with GraphQL.
Attempts:
2 left
💡 Hint

Think about Prisma's function between your database and GraphQL server.

Practice

(1/5)
1. What is the main role of Prisma ORM when used with GraphQL?
easy
A. To define GraphQL schema types
B. To style the frontend user interface
C. To handle HTTP requests from clients
D. To manage database access and queries easily

Solution

  1. Step 1: Understand Prisma ORM's purpose

    Prisma ORM acts as a tool to simplify database operations by providing an easy way to query and manage data.
  2. Step 2: Differentiate Prisma from GraphQL schema and frontend roles

    GraphQL schema defines data types and operations, while frontend styling is unrelated to Prisma's role.
  3. Final Answer:

    To manage database access and queries easily -> Option D
  4. Quick Check:

    Prisma ORM = database access tool [OK]
Hint: Prisma handles database, GraphQL defines schema [OK]
Common Mistakes:
  • Confusing Prisma with GraphQL schema definition
  • Thinking Prisma manages frontend UI
  • Assuming Prisma handles HTTP requests
2. Which of the following is the correct way to import Prisma Client in a Node.js GraphQL resolver file?
easy
A. import Prisma from 'prisma';
B. const PrismaClient = require('prisma-client');
C. import { PrismaClient } from '@prisma/client';
D. const { Prisma } = require('@prisma/client');

Solution

  1. Step 1: Recall Prisma Client import syntax

    The official Prisma Client is imported using ES module syntax: import { PrismaClient } from '@prisma/client';
  2. Step 2: Identify incorrect import forms

    Options B, C, and D use wrong package names or destructuring that Prisma does not support.
  3. Final Answer:

    import { PrismaClient } from '@prisma/client'; -> Option C
  4. Quick Check:

    Correct Prisma import = import { PrismaClient } from '@prisma/client'; [OK]
Hint: Use exact package '@prisma/client' with named import [OK]
Common Mistakes:
  • Using wrong package name like 'prisma-client'
  • Incorrect destructuring of PrismaClient
  • Mixing CommonJS require with ES import incorrectly
3. Given this GraphQL resolver using Prisma:
const users = await prisma.user.findMany({ where: { active: true } });
return users;
What does this resolver return?
medium
A. All users including inactive ones
B. Only users with active set to true
C. An error because 'active' is not a valid field
D. An empty list always

Solution

  1. Step 1: Analyze the Prisma query filter

    The query uses findMany with a where clause filtering users where active equals true.
  2. Step 2: Understand the result of the query

    It returns only users whose active field is true, excluding inactive users.
  3. Final Answer:

    Only users with active set to true -> Option B
  4. Quick Check:

    findMany with where active:true = filtered users [OK]
Hint: Where filters results; active:true returns only active users [OK]
Common Mistakes:
  • Assuming it returns all users ignoring filter
  • Thinking it causes an error without schema check
  • Believing it always returns empty list
4. You wrote this resolver code but get an error:
const newUser = prisma.user.create({
  data: {
    name: 'Alice'
  }
});
return newUser;
What is the likely cause of the error?
medium
A. Missing await before prisma.user.create call
B. Incorrect field name 'name' in data
C. Using create instead of findMany
D. Returning newUser before defining it

Solution

  1. Step 1: Check asynchronous Prisma call

    prisma.user.create returns a Promise, so it needs await to resolve before returning.
  2. Step 2: Identify missing await causing error

    Without await, newUser is a Promise, not the created user object, causing issues in return.
  3. Final Answer:

    Missing await before prisma.user.create call -> Option A
  4. Quick Check:

    Async Prisma calls need await [OK]
Hint: Always await Prisma async calls in resolvers [OK]
Common Mistakes:
  • Forgetting to await async Prisma methods
  • Assuming create returns data synchronously
  • Confusing create with findMany usage
5. You want to fetch a user and their posts in one GraphQL query using Prisma. Which resolver code correctly fetches the user with their posts included?
hard
A. const user = await prisma.user.findUnique({ where: { id }, include: { posts: true } });
B. const user = await prisma.user.findMany({ where: { id }, select: { posts: false } });
C. const user = await prisma.post.findMany({ where: { userId: id } });
D. const user = await prisma.user.findUnique({ where: { id } }); const posts = await prisma.post.findMany({ where: { userId: id } });

Solution

  1. Step 1: Understand Prisma's include option

    Using include: { posts: true } fetches related posts along with the user in one query.
  2. Step 2: Compare options for fetching user with posts

    const user = await prisma.user.findUnique({ where: { id }, include: { posts: true } }); uses findUnique with include correctly; const user = await prisma.user.findMany({ where: { id }, select: { posts: false } }); excludes posts; const user = await prisma.post.findMany({ where: { userId: id } }); fetches posts only; const user = await prisma.user.findUnique({ where: { id } }); const posts = await prisma.post.findMany({ where: { userId: id } }); fetches separately, not in one query.
  3. Final Answer:

    const user = await prisma.user.findUnique({ where: { id }, include: { posts: true } }); -> Option A
  4. Quick Check:

    Include fetches relations in one query [OK]
Hint: Use include to fetch related data in one Prisma query [OK]
Common Mistakes:
  • Using findMany instead of findUnique for single user
  • Not using include to fetch related posts
  • Fetching posts separately causing extra queries
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard