Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Lam
Lam

Posted on

     

Knex Cheat Sheet

[Migrations] Setting up

Create knexfile.js

./node_modules/.bin/knex init
Enter fullscreen modeExit fullscreen mode

Create a migration

knex migrate:make migration_nameknex migrate:make migration_name --env production
Enter fullscreen modeExit fullscreen mode

Run migrations

knex migrate:latestknex migrate:latest --env production
Enter fullscreen modeExit fullscreen mode

Rollback

knex migrate:rollbackknex migrate:rollback --env production
Enter fullscreen modeExit fullscreen mode

See:Migrations

[Modifying] Delete

knex('users').where({id:2}).del()
Enter fullscreen modeExit fullscreen mode

See:Delete

[Modifying] Update

knex('users').where({id:2}).update({name:'Homer'})
Enter fullscreen modeExit fullscreen mode

See:Update

[Modifying] Insert

knex('users')
Enter fullscreen modeExit fullscreen mode

Insert one

.insert({name:'John'})
Enter fullscreen modeExit fullscreen mode

Insert many

.insert([{name:'Starsky'},{name:'Hutch'}])
Enter fullscreen modeExit fullscreen mode

See:Insert

Modifying

{: .-three-column}

[Schema] Other methods

knex.schema.renameTable('persons','people').dropTable('persons')
Enter fullscreen modeExit fullscreen mode
.hasTable('users').then(exists=>···).hasColumn('users','id').then(exists=>···)
Enter fullscreen modeExit fullscreen mode

See:Schema builder

[Schema] Alter table

knex.schema.table('accounts',table=>{
Enter fullscreen modeExit fullscreen mode

Create

table.string('first_name')
Enter fullscreen modeExit fullscreen mode

Alter

table.string('first_name').alter()table.renameColumn('admin','is_admin')
Enter fullscreen modeExit fullscreen mode

Drop

table.dropColumn('admin')table.dropTimestamps('created_at')
Enter fullscreen modeExit fullscreen mode
})
Enter fullscreen modeExit fullscreen mode

{: .-setup}

See:Schema builder

[Schema] Create table

knex.schema.createTable('accounts',table=>{
Enter fullscreen modeExit fullscreen mode

Columns

table.increments('id')table.string('account_name')table.integer('age')table.float('age')table.decimal('balance',8,2)table.boolean('is_admin')table.date('birthday')table.time('created_at')table.timestamp('created_at').defaultTo(knex.fn.now())table.json('profile')table.jsonb('profile')table.uuid('id').primary()
Enter fullscreen modeExit fullscreen mode

Constraints

table.unique('email')table.unique(['email','company_id'])table.dropUnique(···)
Enter fullscreen modeExit fullscreen mode

Indices

table.foreign('company_id').references('companies.id')table.dropForeign(···)
Enter fullscreen modeExit fullscreen mode

Variations

table.integer('user_id').unsigned().references('users.id')
Enter fullscreen modeExit fullscreen mode
}).then(()=>···)
Enter fullscreen modeExit fullscreen mode

{: .-setup}

See:Schema builder

[Select] Etc

knex('users').pluck('id').then(ids=>{···})
Enter fullscreen modeExit fullscreen mode
knex('users').first().then(user=>{···})
Enter fullscreen modeExit fullscreen mode

Booleans

.count('active').count('active as is_active')
Enter fullscreen modeExit fullscreen mode

Numbers

.min('age').max('age').sum('age').sumDistinct('age').avg('age')
Enter fullscreen modeExit fullscreen mode

See:Query builder

[Select] Others

knex('users').distinct()
Enter fullscreen modeExit fullscreen mode

Group

.groupBy('count').groupByRaw('year WITH ROLLUP')
Enter fullscreen modeExit fullscreen mode

Order

.orderBy('name','desc').orderByRaw('name DESC')
Enter fullscreen modeExit fullscreen mode

Offset/limit

.offset(10).limit(20)
Enter fullscreen modeExit fullscreen mode

Having

.having('count','>',100).havingIn('count',[1,100])
Enter fullscreen modeExit fullscreen mode

Union

.union(function(){this.select(···)}).unionAll(···)
Enter fullscreen modeExit fullscreen mode

See:Query builder

Reference

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Code and make art
  • Joined

More fromLam

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp