【问题标题】:Current topology does not support session当前拓扑不支持会话
【发布时间】:2019-05-24 12:09:59
【问题描述】:

嗨,

我收到错误“当前拓扑不支持会话” 请参考附图..

代码为

async function insertBooking(parking, aFunction) {
    const session = await BookingSchema.startSession().catch(error => {
        console.log(error);
    });

    try {
        session.startTransaction();
        let booking = new BookingSchema(parking)
        mongoose.startSession();
        booking.save(function (err, booking) {
            if (booking) {
               //code to be run
            }


        })
        await session.commitTransaction().catch(error => {
            console.log(error);
        });
        session.endSession()
    } catch (error) {
        await session.abortTransaction().catch(error => {
            console.log(error);
        });
        session.endSession();
        throw error;
    }
}

以上代码完全可以在本地系统上运行。 但错误发生在云服务器(数字海洋) 如果需要其他信息,请告诉我。

【问题讨论】:

  • 你检查过服务器上的mongodb版本吗?它必须 >=4.0
  • 经过大量试验,我能够更改 mongodb 的版本 .. 首先我删除了旧的 mongodb 并安装了新版本.. 现在上面的代码工作正常.. ** 请让我知道如何检查mongodb版本.. **
  • 运行mongod了解版本。
  • 尝试> db.runCommand({buildInfo: 1})在云mongodb控制台获取版本。

标签: node.js mongodb mongoose transactions async-await


【解决方案1】:

您似乎没有在支持事务的云服务器上安装MongoDB 4.0

事务仅适用于 >= MongoDB v4.0

【讨论】:

  • 我在 Windows 操作系统中面临同样的问题,但它在 Ubuntu 中运行良好。在 Windows 中添加任何东西????
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 2014-02-06
  • 1970-01-01
  • 2014-10-26
  • 1970-01-01
  • 2018-03-02
  • 2017-10-11
相关资源
最近更新 更多