Bird
Raised Fist0
Expressframework~20 mins

Creating documents in Express - Practice Exercises

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Express Document Creator Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this Express route handler?
Consider this Express route that creates a new document in a MongoDB collection using Mongoose. What will the client receive when this route is called successfully?
Express
app.post('/items', async (req, res) => {
  const item = new Item({ name: req.body.name });
  await item.save();
  res.status(201).json({ id: item._id, name: item.name });
});
A{"id":"<some_id>","name":"<name_from_request>"} with HTTP status 201
BA plain text message 'Item created' with HTTP status 201
CA JSON with the entire item document including __v and timestamps
DAn empty response with HTTP status 200
Attempts:
2 left
💡 Hint
Look at what is sent in the response and the status code.
📝 Syntax
intermediate
2:00remaining
Which option correctly creates a new document and handles errors in Express?
Identify the correct Express route code that creates a new document and sends a 500 status if saving fails.
A
app.post('/users', (req, res) =&gt; {
  const user = new User(req.body);
  user.save();
  res.status(201).json(user);
});
B
app.post('/users', async (req, res) =&gt; {
  try {
    const user = new User(req.body);
    await user.save();
    res.status(201).json(user);
  } catch (e) {
    res.status(500).send('Error');
  }
});
C
app.post('/users', async (req, res) =&gt; {
  const user = new User(req.body);
  await user.save();
  res.json(user);
});
D
app.post('/users', async (req, res) =&gt; {
  try {
    const user = new User(req.body);
    user.save();
    res.status(201).json(user);
  } catch (e) {
    res.status(500).send('Error');
  }
});
Attempts:
2 left
💡 Hint
Look for proper async/await usage and error handling.
🔧 Debug
advanced
2:00remaining
Why does this Express route not save the document?
This route is supposed to create and save a new document but the database remains unchanged. What is the cause?
Express
app.post('/posts', (req, res) => {
  const post = new Post(req.body);
  post.save();
  res.status(201).json({ message: 'Post created' });
});
AThe HTTP method should be GET to create documents.
BThe Post model is not imported, causing a ReferenceError.
CThe route is missing res.end(), so the response never finishes.
Dpost.save() is asynchronous but not awaited, so errors are not caught and save may not complete before response.
Attempts:
2 left
💡 Hint
Think about asynchronous operations and their completion.
state_output
advanced
2:00remaining
What is the value of 'result' after this Express route runs?
Given this code snippet, what will be the value of the variable 'result' after the route is called?
Express
let result = null;
app.post('/data', async (req, res) => {
  const doc = new Data(req.body);
  result = await doc.save();
  res.status(201).json(result);
});
AAn object representing the saved document including _id and other fields
Bnull, because 'result' is not updated outside the async function
Cundefined, since 'result' is declared but never assigned
DA promise object representing the save operation
Attempts:
2 left
💡 Hint
Consider how async/await updates variables in the same scope.
🧠 Conceptual
expert
2:00remaining
Which option best describes the role of middleware when creating documents in Express?
When building an Express app that creates documents, what is the primary purpose of middleware functions in the request handling chain?
ATo send the final response to the client after document creation
BTo directly save documents to the database without route handlers
CTo process and validate incoming data before the document is created
DTo replace the need for database models and schemas
Attempts:
2 left
💡 Hint
Think about what middleware does before the main route logic.

Practice

(1/5)
1. Which Express method is used to handle creating new documents via HTTP POST requests?
easy
A. app.post()
B. app.get()
C. app.put()
D. app.delete()

Solution

  1. Step 1: Understand HTTP methods in Express

    Express uses different methods like get, post, put, and delete to handle HTTP requests.
  2. Step 2: Identify method for creating new data

    The post method is used to create new documents or data entries.
  3. Final Answer:

    app.post() -> Option A
  4. Quick Check:

    Creating documents = app.post() [OK]
Hint: Use app.post() for creating new data entries [OK]
Common Mistakes:
  • Using app.get() instead of app.post()
  • Confusing app.put() with app.post()
  • Using app.delete() for creation
2. Which code snippet correctly enables JSON parsing middleware in Express to access req.body?
easy
A. app.use(express.urlencoded());
B. app.use(express.json());
C. app.use(bodyParser.text());
D. app.use(express.static('public'));

Solution

  1. Step 1: Identify middleware for JSON parsing

    Express provides express.json() middleware to parse JSON request bodies.
  2. Step 2: Match correct usage

    The correct way is app.use(express.json()); to enable JSON parsing.
  3. Final Answer:

    app.use(express.json()); -> Option B
  4. Quick Check:

    JSON parsing middleware = express.json() [OK]
Hint: Use app.use(express.json()) to read JSON body [OK]
Common Mistakes:
  • Using express.urlencoded() for JSON data
  • Using bodyParser.text() instead of JSON parser
  • Forgetting to enable any parser middleware
3. What will be the HTTP status code sent when the following Express route successfully creates a document?
app.post('/items', (req, res) => {
  // Assume document creation here
  res.status(201).send('Created');
});
medium
A. 200
B. 500
C. 400
D. 201

Solution

  1. Step 1: Understand HTTP status codes for creation

    Status code 201 means "Created" and is used when a new resource is successfully created.
  2. Step 2: Check the code's status method

    The code uses res.status(201), so it sends status 201.
  3. Final Answer:

    201 -> Option D
  4. Quick Check:

    Creation success status = 201 [OK]
Hint: Use status 201 for successful creation responses [OK]
Common Mistakes:
  • Assuming 200 means creation success
  • Using 400 or 500 for successful creation
  • Not setting status code explicitly
4. Identify the error in this Express route for creating a document:
app.post('/users', (req, res) => {
  const user = req.body;
  saveUser(user);
  res.send('User created');
});
medium
A. saveUser function is not asynchronous
B. Using res.send instead of res.json
C. Missing JSON parsing middleware to read req.body
D. Route should use app.get instead of app.post

Solution

  1. Step 1: Check access to req.body

    Without JSON parsing middleware, req.body will be undefined.
  2. Step 2: Identify missing middleware

    The code does not show app.use(express.json()), so req.body won't work.
  3. Final Answer:

    Missing JSON parsing middleware to read req.body -> Option C
  4. Quick Check:

    Missing express.json() causes req.body undefined [OK]
Hint: Always enable express.json() before accessing req.body [OK]
Common Mistakes:
  • Thinking res.send must be res.json
  • Using app.get for creation routes
  • Assuming saveUser must be async here
5. You want to create an Express route that accepts JSON data to create a new product and respond with the created product including an ID. Which code snippet correctly implements this?
hard
A. app.post('/products', (req, res) => { const product = req.body; product.id = Date.now(); res.status(201).json(product); });
B. app.get('/products', (req, res) => { const product = req.body; product.id = Date.now(); res.json(product); });
C. app.post('/products', (req, res) => { const product = req.query; product.id = Date.now(); res.status(200).send(product); });
D. app.post('/products', (req, res) => { const product = req.body; res.send('Product created'); });

Solution

  1. Step 1: Use correct HTTP method and access JSON body

    The route uses app.post and accesses req.body which is correct for creating a product.
  2. Step 2: Add an ID and respond with status 201 and JSON

    Assigning product.id = Date.now() simulates creating an ID. Responding with res.status(201).json(product) sends the created product with proper status.
  3. Final Answer:

    Option A code snippet -> Option A
  4. Quick Check:

    POST + req.body + status 201 + json response = app.post('/products', (req, res) => { const product = req.body; product.id = Date.now(); res.status(201).json(product); }); [OK]
Hint: Use app.post with req.body and res.status(201).json() [OK]
Common Mistakes:
  • Using app.get instead of app.post
  • Reading data from req.query instead of req.body
  • Not sending status 201 on creation