Search code examples
javascriptmysqlquery-builderknex.jsbookshelf.js

How to insert multiple rows into mysql using bookshelf js (and knex querybuilder) without using InvokeThen?


I need to insert multiple rows in MySQL table. I have been using invokeThen but invokeThen insert rows using multiple queries.

INSERT INTO table_name (field1,field2) VALUES ("field1-value1","field2-value1");
INSERT INTO table_name (field1,field2) VALUES ("field1-value2","field2-value2");
INSERT INTO table_name (field1,field2) VALUES ("field1-value3","field2-value3");

Can I insert multiple rows with single query using bookshelf js (or with knex querybuilder)?

INSERT INTO table_name (field1,field2) VALUES ("field1-value1","field2-value1"),
                                              ("field1-value2","field2-value2"),
                                              ("field1-value3","field2-value3");

Solution

  • By passing an array of objects to insert:

    knex(”table_name”).insert([{row1}, {row2}, ...])