0
0
Expressframework~20 mins

Defining models in Express - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Express Model 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 model definition code?
Consider this Express model definition using Mongoose. What will be the output when trying to create a new user without the required 'email' field?
Express
const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: String,
  email: { type: String, required: true },
  age: Number
});

const User = mongoose.model('User', userSchema);

async function createUser() {
  try {
    const user = new User({ name: 'Alice', age: 30 });
    await user.save();
    console.log('User saved');
  } catch (error) {
    console.log(error.message);
  }
}

createUser();
AUser saved
BTypeError: Cannot read property 'save' of undefined
CValidation failed: email: Path `email` is required.
DSyntaxError: Unexpected token
Attempts:
2 left
💡 Hint
Think about what happens when a required field is missing in a Mongoose model.
📝 Syntax
intermediate
2:00remaining
Which option correctly defines a Mongoose model with a nested schema?
You want to define a Mongoose model for a blog post that includes a nested 'author' object with 'name' and 'email'. Which code correctly defines this model?
A
const postSchema = new mongoose.Schema({
  title: String,
  author: {
    name: String,
    email: String
  }
});
const Post = mongoose.model('Post', postSchema);
B
const postSchema = new mongoose.Schema({
  title: String,
  author: String
});
const Post = mongoose.model('Post', postSchema);
C
const postSchema = new mongoose.Schema({
  title: String,
  author: [
    { name: String, email: String }
  ]
});
const Post = mongoose.model('Post', postSchema);
D
const authorSchema = new mongoose.Schema({
  name: String,
  email: String
});
const postSchema = new mongoose.Schema({
  title: String,
  author: authorSchema
});
const Post = mongoose.model('Post', postSchema);
Attempts:
2 left
💡 Hint
Nested schemas should be defined separately and referenced inside the main schema.
🔧 Debug
advanced
2:00remaining
Why does this Mongoose model throw a 'Missing schema' error?
Examine the code below. Why does it throw an error 'Missing schema for model "User"' when trying to create a new User?
Express
const mongoose = require('mongoose');

const User = mongoose.model('User');

async function createUser() {
  const user = new User({ name: 'Bob', email: 'bob@example.com' });
  await user.save();
  console.log('User saved');
}

createUser();
ABecause the model name 'User' is reserved and cannot be used
BBecause the schema was not defined before calling mongoose.model('User')
CBecause the 'new' keyword is missing when creating the User instance
DBecause mongoose.connect() was not called before defining the model
Attempts:
2 left
💡 Hint
Check if the schema is passed when defining the model.
state_output
advanced
2:00remaining
What is the value of 'user.isActive' after saving this Mongoose model?
Given this schema with a default value, what will be the value of 'isActive' for a new user saved without specifying it?
Express
const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: String,
  isActive: { type: Boolean, default: true }
});

const User = mongoose.model('User', userSchema);

async function createUser() {
  const user = new User({ name: 'Carol' });
  await user.save();
  console.log(user.isActive);
}

createUser();
Atrue
Bfalse
Cundefined
Dnull
Attempts:
2 left
💡 Hint
Look at the default value set in the schema for 'isActive'.
🧠 Conceptual
expert
2:00remaining
Which statement about Mongoose schema options is correct?
Consider these statements about Mongoose schema options. Which one is true?
ASetting 'timestamps: true' in schema options automatically adds 'createdAt' and 'updatedAt' fields and updates them on save.
BThe 'strict' option set to false means Mongoose will throw an error if extra fields are added to documents.
CUsing 'versionKey: false' disables all validation rules on the schema.
DThe 'toJSON' option cannot be customized in a Mongoose schema.
Attempts:
2 left
💡 Hint
Think about what 'timestamps' option does in Mongoose.