[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10169":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":14,"stars30d":13,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":22,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":44,"readmeContent":45,"aiSummary":46,"trendingCount":15,"starSnapshotCount":15,"syncStatus":47,"lastSyncTime":48,"discoverSource":49},10169,"mikro-orm","mikro-orm\u002Fmikro-orm","TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite\u002FlibSQL databases.","https:\u002F\u002Fmikro-orm.io",null,"TypeScript",9080,643,46,12,0,1,8,77.03,"MIT License",false,"master",true,[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"database","datamapper","entities","entity","identity-map","javascript","libsql","mongodb","mysql","nodejs","orm","postgre","postgresql","sql","sql-server","sqlite","sqlite3","typescript","typescript-orm","unit-of-work","2026-06-12 04:00:49","\u003Ch1 align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fmikro-orm.io\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fmikro-orm\u002Fmikro-orm\u002Fmaster\u002Fdocs\u002Fstatic\u002Fimg\u002Flogo-readme.svg?sanitize=true\" alt=\"MikroORM\" \u002F>\u003C\u002Fa>\n\u003C\u002Fh1>\n\nTypeScript ORM for Node.js based on Data Mapper, [Unit of Work](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Funit-of-work\u002F) and [Identity Map](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fidentity-map\u002F) patterns. Supports MongoDB, MySQL, MariaDB, PostgreSQL, SQLite (including libSQL), MSSQL and Oracle databases.\n\n> Heavily inspired by [Doctrine](https:\u002F\u002Fwww.doctrine-project.org\u002F) and [Hibernate](https:\u002F\u002Fhibernate.org\u002F).\n\n[![NPM version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@mikro-orm\u002Fcore.svg)](https:\u002F\u002Fnpmx.dev\u002Fpackage\u002F@mikro-orm\u002Fcore)\n[![NPM dev version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@mikro-orm\u002Fcore\u002Fnext.svg)](https:\u002F\u002Fnpmx.dev\u002Fpackage\u002F@mikro-orm\u002Fcore)\n[![Chat on discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1214904142443839538?label=discord&color=blue)](https:\u002F\u002Fdiscord.gg\u002Fw8bjxFHS7X)\n[![Downloads](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002F@mikro-orm\u002Fcore.svg)](https:\u002F\u002Fnpmx.dev\u002Fpackage\u002F@mikro-orm\u002Fcore)\n[![Coverage Status](https:\u002F\u002Fimg.shields.io\u002Fcoveralls\u002Fmikro-orm\u002Fmikro-orm.svg)](https:\u002F\u002Fcoveralls.io\u002Fr\u002Fmikro-orm\u002Fmikro-orm?branch=master)\n[![Build Status](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fmikro-orm\u002Fworkflows\u002Ftests\u002Fbadge.svg?branch=master)](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fmikro-orm\u002Factions?workflow=tests)\n\n## Quick Start\n\nInstall a driver package for your database:\n\n```sh\nnpm install @mikro-orm\u002Fpostgresql   # PostgreSQL\nnpm install @mikro-orm\u002Fmysql        # MySQL\nnpm install @mikro-orm\u002Fmariadb      # MariaDB\nnpm install @mikro-orm\u002Fsqlite       # SQLite\nnpm install @mikro-orm\u002Flibsql       # libSQL \u002F Turso\nnpm install @mikro-orm\u002Fmongodb      # MongoDB\nnpm install @mikro-orm\u002Fmssql        # MS SQL Server\nnpm install @mikro-orm\u002Foracledb     # Oracle\n```\n\n> If you use additional packages like `@mikro-orm\u002Fcli`, `@mikro-orm\u002Fmigrations`, or `@mikro-orm\u002Fentity-generator`, install `@mikro-orm\u002Fcore` explicitly as well. See the [quick start guide](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fquick-start) for details.\n\n### Define Entities\n\nThe recommended way to define entities is using [`defineEntity`](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fdefine-entity) with `setClass`:\n\n```typescript\nimport { defineEntity, p, MikroORM } from '@mikro-orm\u002Fpostgresql';\n\nconst AuthorSchema = defineEntity({\n  name: 'Author',\n  properties: {\n    id: p.integer().primary(),\n    name: p.string(),\n    email: p.string(),\n    born: p.datetime().nullable(),\n    books: () => p.oneToMany(Book).mappedBy('author'),\n  },\n});\n\nexport class Author extends AuthorSchema.class {}\nAuthorSchema.setClass(Author);\n\nconst BookSchema = defineEntity({\n  name: 'Book',\n  properties: {\n    id: p.integer().primary(),\n    title: p.string(),\n    author: () => p.manyToOne(Author).inversedBy('books'),\n  },\n});\n\nexport class Book extends BookSchema.class {}\nBookSchema.setClass(Book);\n```\n\nYou can also define entities using [decorators](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fusing-decorators) or [`EntitySchema`](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fdefine-entity#entityschema-low-level-api). See the [defining entities guide](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fdefining-entities) for all options.\n\n### Initialize and Use\n\n```typescript\nimport { MikroORM, RequestContext } from '@mikro-orm\u002Fpostgresql';\n\nconst orm = await MikroORM.init({\n  entities: [Author, Book],\n  dbName: 'my-db',\n});\n\n\u002F\u002F Create new entities\nconst author = orm.em.create(Author, {\n  name: 'Jon Snow',\n  email: 'snow@wall.st',\n});\nconst book = orm.em.create(Book, {\n  title: 'My Life on The Wall',\n  author,\n});\n\n\u002F\u002F Flush persists all tracked changes in a single transaction\nawait orm.em.flush();\n```\n\n### Querying\n\n```typescript\n\u002F\u002F Find with relations\nconst authors = await orm.em.findAll(Author, {\n  populate: ['books'],\n  orderBy: { name: 'asc' },\n});\n\n\u002F\u002F Type-safe QueryBuilder\nconst qb = orm.em.createQueryBuilder(Author);\nconst result = await qb\n  .select('*')\n  .where({ books: { title: { $like: '%Wall%' } } })\n  .getResult();\n```\n\n### Request Context\n\nIn web applications, use `RequestContext` to isolate the identity map per request:\n\n```typescript\nconst app = express();\n\napp.use((req, res, next) => {\n  RequestContext.create(orm.em, next);\n});\n```\n\nMore info about `RequestContext` is described [here](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fidentity-map\u002F#request-context).\n\n## Unit of Work\n\n> Unit of Work maintains a list of objects (_entities_) affected by a business transaction\n> and coordinates the writing out of changes. [(Martin Fowler)](https:\u002F\u002Fwww.martinfowler.com\u002FeaaCatalog\u002FunitOfWork.html)\n\nWhen you call `em.flush()`, all computed changes are queried inside a database transaction. This means you can control transaction boundaries simply by making changes to your entities and calling `flush()` when ready.\n\n```typescript\nconst author = await em.findOneOrFail(Author, 1, {\n  populate: ['books'],\n});\nauthor.name = 'Jon Snow II';\nauthor.books.getItems().forEach(book => book.title += ' (2nd ed.)');\nauthor.books.add(orm.em.create(Book, { title: 'New Book', author }));\n\n\u002F\u002F Flush computes change sets and executes them in a single transaction\nawait em.flush();\n```\n\nThe above flush will execute:\n\n```sql\nbegin;\nupdate \"author\" set \"name\" = 'Jon Snow II' where \"id\" = 1;\nupdate \"book\"\n  set \"title\" = case\n    when (\"id\" = 1) then 'My Life on The Wall (2nd ed.)'\n    when (\"id\" = 2) then 'Another Book (2nd ed.)'\n    else \"title\" end\n  where \"id\" in (1, 2);\ninsert into \"book\" (\"title\", \"author_id\") values ('New Book', 1);\ncommit;\n```\n\n## Core Features\n\n- [Clean and Simple Entity Definition](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fdefining-entities) — decorators, `EntitySchema`, or `defineEntity`\n- [Identity Map](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fidentity-map) and [Unit of Work](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Funit-of-work) — automatic change tracking\n- [Entity References](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fentity-references) and [Collections](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fcollections)\n- [QueryBuilder](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fquery-builder) and [Kysely Integration](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fkysely)\n- [Transactions](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Ftransactions) and [Cascading](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fcascading)\n- [Populating Relations](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fpopulating-relations) and [Loading Strategies](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Floading-strategies)\n- [Filters](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Ffilters) and [Lifecycle Hooks](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fevents#hooks)\n- [Schema Generator](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fschema-generator) and [Migrations](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fmigrations)\n- [Entity Generator](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fentity-generator) and [Seeding](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fseeding)\n- [Embeddables](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fembeddables), [Custom Types](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fcustom-types), and [Serialization](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fserializing)\n- [Composite and Foreign Keys as Primary Key](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fcomposite-keys)\n- [Entity Constructors](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fentity-constructors) and [Property Validation](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fproperty-validation)\n- [Modelling Relationships](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Frelationships) and [Vanilla JS Support](https:\u002F\u002Fmikro-orm.io\u002Fdocs\u002Fusage-with-js)\n\n## Documentation\n\nMikroORM documentation, included in this repo in the root directory, is built with [Docusaurus](https:\u002F\u002Fdocusaurus.io) and publicly hosted on GitHub Pages at https:\u002F\u002Fmikro-orm.io.\n\nThere is also auto-generated [CHANGELOG.md](CHANGELOG.md) file based on commit messages (via `semantic-release`).\n\n## Example Integrations\n\nYou can find example integrations for some popular frameworks in the [`mikro-orm-examples` repository](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fmikro-orm-examples):\n\n### TypeScript Examples\n\n- [Express + MongoDB](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fexpress-ts-example-app)\n- [Nest + MySQL](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fnestjs-example-app)\n- [RealWorld example app (Nest + MySQL)](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fnestjs-realworld-example-app)\n- [Koa + SQLite](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fkoa-ts-example-app)\n- [GraphQL + PostgreSQL](https:\u002F\u002Fgithub.com\u002Fdriescroons\u002Fmikro-orm-graphql-example)\n- [Inversify + PostgreSQL](https:\u002F\u002Fgithub.com\u002FPodaruDragos\u002Finversify-example-app)\n- [NextJS + MySQL](https:\u002F\u002Fgithub.com\u002Fjonahallibone\u002Fmikro-orm-nextjs)\n- [Accounts.js REST and GraphQL authentication + SQLite](https:\u002F\u002Fgithub.com\u002Fdarkbasic\u002Fmikro-orm-accounts-example)\n- [Nest + Shopify + PostgreSQL + GraphQL](https:\u002F\u002Fgithub.com\u002FCloudshelf\u002FShopify_CSConnector)\n- [Elysia.js + libSQL + Bun](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Felysia-bun-example-app)\n- [Electron.js + PostgreSQL](https:\u002F\u002Fgithub.com\u002Fadnanlah\u002Felectron-mikro-orm-example-app)\n\n### JavaScript Examples\n\n- [Express + SQLite](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fexpress-js-example-app)\n\n## Contributing\n\nContributions, issues and feature requests are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) for details on the process for submitting pull requests to us.\n\n## Authors\n\n**Martin Adámek**\n\n- Twitter: [@B4nan](https:\u002F\u002Ftwitter.com\u002FB4nan)\n- Github: [@b4nan](https:\u002F\u002Fgithub.com\u002Fb4nan)\n\nSee also the list of contributors who [participated](https:\u002F\u002Fgithub.com\u002Fmikro-orm\u002Fmikro-orm\u002Fcontributors) in this project.\n\n## Show Your Support\n\nPlease star this repository if this project helped you!\n\n> If you'd like to support my open-source work, consider sponsoring me directly at [github.com\u002Fsponsors\u002Fb4nan](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fb4nan).\n\n## License\n\nCopyright © 2018-present [Martin Adámek](https:\u002F\u002Fgithub.com\u002Fb4nan).\n\nThis project is licensed under the MIT License - see the [LICENSE file](LICENSE) for details.\n","MikroORM 是一个基于 Data Mapper、Unit of Work 和 Identity Map 模式的 Node.js 的 TypeScript ORM。它支持多种数据库，包括 MongoDB、MySQL、MariaDB、PostgreSQL、SQLite（含 libSQL）、MS SQL Server 和 Oracle。该项目提供了丰富的功能如实体定义、关系映射及事务管理，并且受到 Doctrine 和 Hibernate 的启发。适用于需要在 Node.js 项目中高效地进行数据库操作的场景，特别是当开发者偏好使用 TypeScript 并希望利用 ORM 提供的抽象层来简化数据库交互时。",2,"2026-06-11 03:27:00","top_topic"]