Utility
A collection of utilities that the knex library provides for convenience.
batchInsert
knex.batchInsert(tableName)
The batchInsert
utility will insert a batch of rows wrapped inside a transaction (which is automatically created unless explicitly given a transaction using transacting), at a given chunkSize
.
It's primarily designed to be used when you have thousands of rows to insert into a table.
By default, the chunkSize
is set to 1000.
BatchInsert also allows for returning values and supplying transactions using transacting.
const rows = [{/*...*/}, {/*...*/}];
const chunkSize = 30;
knex.batchInsert('TableName', rows, chunkSize)
.returning('id')
.then(function(ids) { /*...*/ })
.catch(function(error) { /*...*/ });
knex.transaction(function(tr) {
return knex.batchInsert('TableName', rows, chunkSize)
.transacting(tr)
})
.then(function() { /*...*/ })
.catch(function(error) { /*...*/ });
now
knex.fn.now(precision)
Return the current timestamp with a precision (optional)
table.datetime('some_time', { precision: 6 }).defaultTo(knex.fn.now(6))
uuid
knex.fn.uuid()
Return a uuid generation function. Not supported by Redshift
table.uuid('uuid').defaultTo(knex.fn.uuid())
uuidToBin
knex.fn.uuidToBin(uuid)
Convert a string uuid (char(36)) to a binary uuid (binary(16))
knex.schema.createTable('uuid_table', (t) => {
t.uuid('uuid_col_binary', { useBinaryUuid: true });
});
knex('uuid_table').insert({
uuid_col_binary: knex.fn.uuidToBin('3f06af63-a93c-11e4-9797-00505690773f'),
});
binToUuid
knex.fn.binToUuid(binaryUuid)
Convert a binary uuid (binary(16)) to a string uuid (char(36))
const res = await knex('uuid_table').select('uuid_col_binary');
knex.fn.binToUuid(res[0].uuid_col_binary)