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);