Bird
Raised Fist0
Expressframework~10 mins

Mongoose ODM setup in Express - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import Mongoose in an Express app.

Express
const mongoose = require('[1]');
Drag options to blanks, or click blank then click option'
Amongoose
Bexpress
Cmongodb
Dbody-parser
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'express' instead of 'mongoose' in require.
Using 'mongodb' which is the native driver, not Mongoose.
2fill in blank
medium

Complete the code to connect Mongoose to a MongoDB database.

Express
mongoose.[1]('mongodb://localhost:27017/mydb');
Drag options to blanks, or click blank then click option'
AcreateConnection
Bconnect
Copen
Dstart
Attempts:
3 left
💡 Hint
Common Mistakes
Using createConnection instead of connect.
Using non-existent methods like open or start.
3fill in blank
hard

Fix the error in defining a Mongoose schema.

Express
const userSchema = new mongoose.Schema({ name: [1] });
Drag options to blanks, or click blank then click option'
A{ type: }
Btype: String
CString
D{ type: String }
Attempts:
3 left
💡 Hint
Common Mistakes
Using just String without { type: String }.
Leaving type empty or incomplete.
4fill in blank
hard

Fill both blanks to create a Mongoose model and export it.

Express
const [1] = mongoose.model('User', [2]);
module.exports = [1];
Drag options to blanks, or click blank then click option'
AUser
BuserSchema
CUserSchema
DuserModel
Attempts:
3 left
💡 Hint
Common Mistakes
Confusing model name with schema variable.
Exporting the schema instead of the model.
5fill in blank
hard

Fill all three blanks to define a schema with a required email field and create a model.

Express
const [1] = new mongoose.Schema({
  email: { type: String, [2]: true }
});
const [3] = mongoose.model('Contact', [1]);
Drag options to blanks, or click blank then click option'
AcontactSchema
Brequired
CContact
DemailSchema
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong variable names for schema or model.
Using require instead of required.

Practice

(1/5)
1. What is the main purpose of using mongoose.connect() in an Express app?
easy
A. To connect the Express app to a MongoDB database
B. To start the Express server
C. To define data models for the app
D. To handle HTTP requests

Solution

  1. Step 1: Understand the role of mongoose.connect()

    This function is used to establish a connection between the Express app and the MongoDB database.
  2. Step 2: Differentiate from other functions

    Starting the server or defining models are separate tasks; mongoose.connect() specifically handles database connection.
  3. Final Answer:

    To connect the Express app to a MongoDB database -> Option A
  4. Quick Check:

    mongoose.connect() = Connect DB [OK]
Hint: Remember: connect() links app to database [OK]
Common Mistakes:
  • Confusing connect() with server start
  • Thinking connect() defines models
  • Assuming connect() handles HTTP requests
2. Which of the following is the correct syntax to connect Mongoose to a MongoDB database URL stored in dbURI?
easy
A. mongoose.connect = dbURI
B. mongoose.connect(dbURI).then(() => console.log('Connected'))
C. mongoose.connect(dbURI, callback())
D. mongoose.connect(dbURI).catch(console.log('Error'))

Solution

  1. Step 1: Identify correct use of mongoose.connect()

    The method returns a promise, so chaining .then() for success is correct.
  2. Step 2: Check syntax correctness

    mongoose.connect(dbURI).then(() => console.log('Connected')) uses .then() properly; mongoose.connect = dbURI wrongly assigns connect; mongoose.connect(dbURI, callback()) uses callback incorrectly; mongoose.connect(dbURI).catch(console.log('Error')) misuses catch with console.log call.
  3. Final Answer:

    mongoose.connect(dbURI).then(() => console.log('Connected')) -> Option B
  4. Quick Check:

    Use .then() after connect() [OK]
Hint: Use .then() after connect() for success handling [OK]
Common Mistakes:
  • Assigning connect instead of calling it
  • Passing callback incorrectly
  • Calling console.log inside catch instead of passing function
3. Given this code snippet, what will be logged if the connection to MongoDB succeeds?
mongoose.connect(dbURI)
  .then(() => console.log('DB connected'))
  .catch(err => console.error('Connection error', err));
medium
A. undefined
B. Connection error
C. DB connected
D. No output

Solution

  1. Step 1: Analyze promise resolution

    If connection succeeds, the .then() callback runs, logging 'DB connected'.
  2. Step 2: Understand catch block role

    The .catch() runs only if there is an error, so it won't run here.
  3. Final Answer:

    DB connected -> Option C
  4. Quick Check:

    Success logs 'DB connected' [OK]
Hint: Success triggers .then(), error triggers .catch() [OK]
Common Mistakes:
  • Confusing .then() and .catch() roles
  • Expecting output from catch on success
  • Ignoring promise chaining
4. Identify the error in this Mongoose connection code:
mongoose.connect('mongodb://localhost:27017/mydb', () => {
  console.log('Connected to DB');
}).catch(err => console.error(err));
medium
A. console.log should be outside connect()
B. The database URL is incorrect
C. Missing await keyword before connect()
D. Using a callback inside connect() with .catch() causes an error

Solution

  1. Step 1: Understand mongoose.connect() usage

    It returns a promise; mixing callback and .catch() is incorrect and causes errors.
  2. Step 2: Identify correct pattern

    Use either callback or promise, not both together.
  3. Final Answer:

    Using a callback inside connect() with .catch() causes an error -> Option D
  4. Quick Check:

    Callback and .catch() can't be combined [OK]
Hint: Use either callback or promise, not both [OK]
Common Mistakes:
  • Mixing callbacks and promises
  • Assuming .catch() works with callbacks
  • Ignoring promise nature of connect()
5. You want to connect to MongoDB using Mongoose and log a custom message on success or failure. Which code correctly implements this with async/await inside an Express app?
hard
A. async function connectDB() { try { await mongoose.connect(dbURI); console.log('DB connected'); } catch (err) { console.error('Connection failed', err); } }
B. mongoose.connect(dbURI, () => { console.log('DB connected'); }).catch(err => console.error('Connection failed', err));
C. mongoose.connect(dbURI).then(() => { console.log('DB connected'); }).catch(console.error('Connection failed'));
D. await mongoose.connect(dbURI).then(() => console.log('DB connected')).catch(err => console.error(err));

Solution

  1. Step 1: Use async/await properly

    async function connectDB() { try { await mongoose.connect(dbURI); console.log('DB connected'); } catch (err) { console.error('Connection failed', err); } } defines an async function and uses try/catch to handle success and errors correctly.
  2. Step 2: Check other options for errors

    mongoose.connect(dbURI, () => { console.log('DB connected'); }).catch(err => console.error('Connection failed', err)); mixes callback and .catch(); mongoose.connect(dbURI).then(() => { console.log('DB connected'); }).catch(console.error('Connection failed')); calls console.error immediately; await mongoose.connect(dbURI).then(() => console.log('DB connected')).catch(err => console.error(err)); misuses await with .then() chaining.
  3. Final Answer:

    async function with try/catch and await mongoose.connect() -> Option A
  4. Quick Check:

    Async/await with try/catch is clean and correct [OK]
Hint: Use async function with try/catch for clean connection [OK]
Common Mistakes:
  • Mixing callbacks and promises
  • Calling functions immediately inside catch
  • Using await with .then() chaining