My biggest problem with bookshelf is that it automatically grabs column names, so you don't (by default) have any representation in code of what the dang model looks like. Since JS is not typed, this can lead to a lot of having no idea what might be going on unless you wrote the code yourself
Bookshelf isn't bad - but also make sure to check out knex, which Bookshelf is build on top of. Knex is a great Dapper like micro ORM/query builder if you'd just rather do most of your work in SQL.
I was battling with Sequelize JS for a long time, then discovered Bookshelf. A breath of fresh air, it works so much better. Plus, the underlying library (Knex) is also fantastic for raw queries, migrations, etc.
For end to end usage samples and somewhat comparing to other DBs I can recommend my kitchen-sink project NERD-stack: <a href="https://github.com/Xantier/nerd-stack" rel="nofollow">https://github.com/Xantier/nerd-stack</a>
When I used this back in the day, it was frustrating that the exceptions thrown by BookShelf would be a mismatch of:
ValidationErrors, BookShelf errors, database specific errors.<p>It might be a comment on the JavaScript ecosystem but trying to collate all these myriad of exceptions into a single result to show my user was frustrating.
Can someone help me with this?<p><a href="http://stackoverflow.com/questions/32777559/how-to-join-3-tables-with-bookshelf-in-node-js" rel="nofollow">http://stackoverflow.com/questions/32777559/how-to-join-3-ta...</a>