Mongoose vs TypeORM: What are the differences?
What is Mongoose? MongoDB object modeling designed to work in an asynchronous environment. Let's face it, writing MongoDB validation, casting and business logic boilerplate is a drag. That's why we wrote Mongoose. Mongoose provides a straight-forward, schema-based solution to modeling your application data and includes built-in type casting, validation, query building, business logic hooks and more, out of the box.
Mongoose belongs to "Object Document Mapper (ODM)" category of the tech stack, while TypeORM can be primarily classified under "Microframeworks (Backend)".
Mongoose and TypeORM are both open source tools. Mongoose with 19K GitHub stars and 2.63K forks on GitHub appears to be more popular than TypeORM with 13.9K GitHub stars and 1.75K GitHub forks.
PedidosYa, Accenture, and WebbyLab are some of the popular companies that use Mongoose, whereas TypeORM is used by Sofit Software, Certain Lending, and KVIKYMART. Mongoose has a broader approval, being mentioned in 88 company stacks & 93 developers stacks; compared to TypeORM, which is listed in 6 company stacks and 7 developer stacks.
What is Mongoose?
What is TypeORM?
Need advice about which tool to choose?Ask the StackShare community!
Sign up to add, upvote and see more prosMake informed product decisions
What are the cons of using TypeORM?
Sign up to get full access to all the companiesMake informed product decisions
What tools integrate with TypeORM?
Sign up to get full access to all the tool integrationsMake informed product decisions
I inherited a stack where Mongoose is used in the database layer.
It's been several months and it's still the single highest source of daily WT*s in my backend development. The API is full of irregularities and the design is a poor mix of object-orientation and stateful objects with a lot implicit behavior. Mongoose made the choices of taking the worst parts of ORMs and using them in a context where the benefits of ORMs don't apply. The only reason I'm keeping it is its handy
.populate() feature. Expect bad surprises!