Migrations
and Seeds
Objectives
- Discuss migrations and seeds
- Build and run migrations to create tables
- Build and run seeds to populate data
Migrations
- Define sets of schema changes
- Instructions for building tables
Migration Facts
- Files are generated with a timestamp and run in that order.
- Think about relationships between resources and generate migrations in a logical order.
- NEVER MODIFY A MIGRATION FILE AFTER IT HAS BEEN RUN!
- You can rollback migrations.
Create a Migration
$ knex migrate:make create_birds
Create a Migration
exports.up = knex => {
return knex.schema.createTable('zebras', table => {
table.increments()
table.integer('stripes')
table.string('name')
table.string('location')
})
}
exports.down = knex => {
return knex.schema.dropTableIfExists('zebras')
}
Run Migrations
$ knex migrate:latest
Seeds
- Populate your database with test or seed data
Seed Facts
- Seeds are run in alphanumeric order as well, but feel free to modify the titles.
- Order matters if you have relationships in the data; Create seeds that other seeds depend on first.
- You can modify the contents of seed files.
Create a Seed
$ knex seed:make birds
Create a Seed
exports.seed = function(knex) {
return knex('birds').del()
.then(function () {
return knex('birds').insert([
{ name: 'Elmo', top_speed: 45, location: 'Tokyo' },
{ name: 'Mary', top_speed: 112, location: 'Melbourne' },
{ name: 'Peggy', top_speed: 28, location: 'Costa Rica' },
{ name: 'Donovan', top_speed: 60, location: 'Patagonia' },
{ name: 'David', top_speed: 10, location: 'Maui' }
])
})
}
Run Seeds
$ knex seed:run
Objectives Review
- Discuss migrations and seeds
- Build and run migrations to create tables
- Build and run seeds to populate data
Migrations and Seeds
By Elana
Migrations and Seeds
- 666