2. Which command correctly runs all pending migrations in a NestJS project using TypeORM?
easy
A. npx typeorm migration:create
B. npx typeorm migration:revert
C. npx typeorm migration:generate
D. npx typeorm migration:run
Solution
Step 1: Recall commands for migrations
migration:run applies pending migrations to the database.
Step 2: Differentiate from other commands
migration:create creates a new migration file, migration:generate generates migration from schema changes, and migration:revert undoes the last migration.
Final Answer:
npx typeorm migration:run -> Option D
Quick Check:
Run migrations = migration:run [OK]
Hint: Run migrations with migration:run command [OK]
Common Mistakes:
Using migration:create to run migrations
Confusing migration:generate with migration:run
Using migration:revert to apply migrations
3. Given this migration class, what will happen when up() is run?
export class AddAgeColumn1678901234567 {
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE users ADD COLUMN age int`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE users DROP COLUMN age`);
}
}
medium
A. Creates a new table called 'age'
B. Removes the 'age' column from the 'users' table
C. Adds a new integer column 'age' to the 'users' table
D. Throws a syntax error because of missing semicolons
Solution
Step 1: Analyze the up() method
The up() method runs SQL to add a column named 'age' of type integer to the 'users' table.
Step 2: Understand the effect of the query
This modifies the existing 'users' table by adding the new column; it does not remove columns or create new tables.
Final Answer:
Adds a new integer column 'age' to the 'users' table -> Option C
Quick Check:
up() adds column 'age' [OK]
Hint: up() applies changes like adding columns [OK]
Common Mistakes:
Confusing up() with down() method
Thinking it creates a new table
Assuming syntax error due to semicolons
4. You wrote this migration but get an error when running npx typeorm migration:run. What is the likely problem?
A. The SQL syntax for dropping a column is incorrect
B. The migration class name is invalid
C. Missing async keyword in down() method
D. The migration file is not saved
Solution
Step 1: Check the SQL in up() method
The query ALTER TABLE users DROP email is incorrect SQL syntax for dropping a column.
Step 2: Correct SQL syntax for dropping a column
The correct syntax is ALTER TABLE users DROP COLUMN email. Missing 'COLUMN' causes the error.
Final Answer:
The SQL syntax for dropping a column is incorrect -> Option A
Quick Check:
DROP COLUMN keyword required in SQL [OK]
Hint: Use DROP COLUMN to remove columns in SQL [OK]
Common Mistakes:
Omitting COLUMN keyword in DROP statement
Assuming class name causes error
Forgetting async keyword (not the cause here)
5. You want to create a migration that renames a column 'username' to 'user_name' in the 'accounts' table and can be reverted. Which up() and down() methods are correct?