mongoose MongoDB:当前拓扑不支持会话

x33g5p2x  于 2022-12-29  发布在  Go
关注(0)|答案(1)|浏览(415)

我正在学习均值堆栈开发。我正在尝试执行一个事务。我遵循的步骤:
1.我启动mongod.exe,并将标志设置为--replSet rs 0。
1.然后我启动了Mongo Shell,然后我写了下面的代码。

let session: ClientSession | undefined;
    try {
        const data = req.body;
        console.log(data);
        const movie = new Movie({ name: data['name'], cast: data['cast'] });
        const conn = await db.connect()
        session = await conn.startSession()
        session.withTransaction(async () => {
            const doc = await movie.save({ session: session, validateBeforeSave: true });
            SuccessResponse(res);
            res.json(doc);
        })
        await session.commitTransaction()
        session.endSession();
    } catch (err) {
        console.log(err)
        await log(err)
        if (session) {
            //session.abortTransaction();
            session.endSession()
        }
        ServerError(res);
        res.end();
    }

但是我得到了以下错误

MongoError: Current topology does not support sessions

任何帮助。

brc7rcf0

brc7rcf01#

看起来好像如果你的连接被挂起了(例如,遇到了断点),MongoError: Current topology does not support sessions会被抛出,即使Current topology..部分与它无关。也许Session connection timed out. Try again会更合适。
因此,如果您确定您的设置应该支持会话,请重试。

相关问题