Начну с плохой новости: транзакции mongodb еще не поддерживаются в MikroORM (хотя они могут приземлиться в течение нескольких недель, возможно, уже реализован Po C). Вы можете подписаться здесь на обновления: https://github.com/mikro-orm/mikro-orm/issues/34
Но позвольте мне ответить на остальное, как это будет применяться:
Вы можете использовать const collection = (em as EntityManager<MongoDriver>).getConnection().getCollection('counter');
, чтобы получить коллекцию из внутреннего экземпляра подключения go. Вы также можете использовать orm.em.getTransactionContext()
для получения текущего контекста транзакции (в настоящее время реализован только в sql драйверах, но в будущем это, вероятно, вернет объект session
в mon go).
Также обратите внимание что в драйвере mon go неявные транзакции не будут включены по умолчанию (хотя это будет настраиваться), поэтому вам нужно будет использовать явное разграничение транзакций через em.transactional(...)
.
Помощник RequestContext
работает автоматически. Вы просто регистрируете его как промежуточное ПО (выполняется автоматически в адаптере nest js orm), а затем ваш обработчик запросов (метод маршрута / конечной точки / контроллера) запускается в домене, который разделяет контекст. Благодаря этому все службы в DI могут совместно использовать единичные экземпляры репозиториев, но они автоматически выбирают правильный контекст из домена.
У вас в основном есть этот автоматический c контекст запроса, и затем вы можете создавать новые (вложенные) контексты вручную через em.transactional(...)
.
https://mikro-orm.io/docs/transactions/#approach -2 - явно