我运行在mongodb atlas上,在免费的M0集群层上。
当尝试进行交易时,我遇到了这个错误:
MongoServerError: Transaction numbers are only allowed on a replica set member or mongos
我已经尝试了下面两种方法的事务。
在许多地方mongodb atlas conveyor事务是支持的(like here),并且它应该只是“工作”。
我是不是漏掉了什么?
我的连接字符串是:
mongodb+srv://USER:PASS@cluster0.6eiq4.mongodb.net/DB_NAME?retryWrites=true&w=majority
第一种方法
const session = await connection.startSession();
session.startTransaction();
try {
const result = await SomeModel.create({ stuff }, { session });
await session.commitTransaction();
return result;
} catch (error) {
console.log("abort transaction!", error);
await session.abortTransaction();
} finally {
await session.endSession();
}
第二种方法
const session = await connection.startSession();
session.withTransaction(async () => {
try {
const result = await SomeModel.create({ stuff }, { session });
await session.commitTransaction();
return result;
} catch (error) {
console.log("abort transaction!", error);
await session.abortTransaction();
} finally {
await session.endSession();
}
});
1条答案
按热度按时间xmakbtuz1#
连接字符串中缺少
replicaSet=rs
。