How to interact with a join table in bookshelf and knex?

1.5k views Asked by At

I want to create an entry in a join table using bookshelf. I followed the instructions on the bookshelf website here. (Models instantiation with bookshelf and tables creation with knex).

Is there a way, upon creation of a new Book, to add values to the authors_books table WITHOUT creating an authors_books model/collection?

What should I add to this:

//Books references the Books collection that holds the Book models

var book = new Book({
      title: title,
      base_url: req.headers.origin
    });

    book.save().then(function(newBook) {
      Books.add(newLink);
      res.send(200, newBook);
    });
1

There are 1 answers

0
uglycode On BEST ANSWER

Yes, of course, it's quite simple.

You need two models, Book and Author. Both have belongsToMany relationship defined and withPivot as well. withPivot lists the attributes that are in the junction table, see more here: http://bookshelfjs.org/#Model-withPivot

Afterwards, you call updatePivot, to update the attributes that are in author_book table only.