首页 > 解决方案 > mongoose - 如何从连接对象启动事务会话?总是抛出“没有交易开始”

问题描述

我有一个使用 mongoose 与 mongo db 交互的 Nestjs 项目。

我遇到的问题是我似乎无法从连接对象本身成功启动会话。每当我尝试使用生成的会话时,它都会抛出:

MongoError: No transaction started

100% 的时间

  public async get_session(): Promise<ClientSession> {
    const session = await this.connection.startSession();

    return session;
  }

并且间歇性地,它会抛出:

MongoError: Given transaction number 2 does not match any in-progress transactions. The active transaction number is 1

以下实现的变体:

public get_session(): ClientSession {
    return this.connection.getClient().startSession();
  }

查看文档-两者都应该有效,但实际上并非如此。

使用的版本:

    "mongoose": "^5.11.18",
    "@nestjs/mongoose": "^7.2.3",
    "@nestjs/core": "^7.6.15",
    "typescript": "4.0.6",

标签: mongodbmongoosenestjsnestjs-mongoose

解决方案


推荐阅读