- Notifications
You must be signed in to change notification settings - Fork2.2k
A query builder for PostgreSQL, MySQL, CockroachDB, SQL Server, SQLite3 and Oracle, designed to be flexible, portable, and fun to use.
License
knex/knex
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A SQL query builder that isflexible,portable, andfun to use!
A batteries-included, multi-dialect (PostgreSQL, MySQL, CockroachDB, MSSQL, SQLite3, Oracle (including Oracle Wallet Authentication)) query builder forNode.js, featuring:
Node.js versions 12+ are supported.
- Take a look at thefull documentation to get started!
- Browse thelist of plugins and tools built for knex
- Check out ourrecipes wiki to search for solutions to some specific problems
- In case of upgrading from an older version, seemigration guide
You can report bugs and discuss features on theGitHub issues page or send tweets to@kibertoad.
For support and questions, join ourGitter channel.
For knex-based Object Relational Mapper, see:
To see the SQL that Knex will generate for a given query, you can useKnex Query Lab
We have several exampleson the website. Here is the first one to get you started:
constknex=require('knex')({client:'sqlite3',connection:{filename:'./data.db',},});try{// Create a tableawaitknex.schema.createTable('users',(table)=>{table.increments('id');table.string('user_name');})// ...and another.createTable('accounts',(table)=>{table.increments('id');table.string('account_name');table.integer('user_id').unsigned().references('users.id');});// Then query the table...constinsertedRows=awaitknex('users').insert({user_name:'Tim'});// ...and using the insert id, insert into the other table.awaitknex('accounts').insert({account_name:'knex',user_id:insertedRows[0],});// Query both of the rows.constselectedRows=awaitknex('users').join('accounts','users.id','accounts.user_id').select('users.user_name as user','accounts.account_name as account');// map over the resultsconstenrichedRows=selectedRows.map((row)=>({ ...row,active:true}));// Finally, add a catch statement}catch(e){console.error(e);}
import{Knex,knex}from'knex';interfaceUser{id:number;age:number;name:string;active:boolean;departmentId:number;}constconfig:Knex.Config={client:'sqlite3',connection:{filename:'./data.db',},};constknexInstance=knex(config);try{constusers=awaitknex<User>('users').select('id','age');}catch(err){// error handling}
If you are launching your Node application with--experimental-modules
,knex.mjs
should be picked up automatically and named ESM import should work out-of-the-box.Otherwise, if you want to use named imports, you'll have to import knex like this:
import{knex}from'knex/knex.mjs';
You can also just do the default import:
importknexfrom'knex';
If you are not using TypeScript and would like the IntelliSense of your IDE to work correctly, it is recommended to set the type explicitly:
/** *@type {Knex} */constdatabase=knex({client:'mysql',connection:{host:'127.0.0.1',user:'your_database_user',password:'your_database_password',database:'myapp_test',},});database.migrate.latest();
About
A query builder for PostgreSQL, MySQL, CockroachDB, SQL Server, SQLite3 and Oracle, designed to be flexible, portable, and fun to use.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.