我有两个不同的API端点可更新集合中的相同字段(用户集合的钱包字段)。在这两个API中,事务是使用mongoose实现的。当我同时访问这两个端点时,其中一个端点成功执行,而另一个端点会出现“WriteConflict”错误,并标记为“TransientTransactionError”。
根据MongoDB文档,它提供了处理“TransientTransactionError”错误的事务重试功能。所以,请建议如何在出现这种错误时重试事务。
当我同时使用不同端点更新同一文档时,就会收到此错误。
根据MongoDB文档,它提供了处理“TransientTransactionError”错误的事务重试功能。所以,请建议如何在出现这种错误时重试事务。
当我同时使用不同端点更新同一文档时,就会收到此错误。
MongoError: WriteConflict
at Connection.<anonymous> (/Users/node_modules/mongodb-core/lib/connection/pool.js:443:61)
at Connection.emit (events.js:196:13)
at Connection.EventEmitter.emit (domain.js:471:20)
at processMessage (/Users/node_modules/mongodb-core/lib/connection/connection.js:364:10)
at TLSSocket.<anonymous> (/Users/node_modules/mongodb-core/lib/connection/connection.js:533:15)
at TLSSocket.emit (events.js:196:13)
at TLSSocket.EventEmitter.emit (domain.js:471:20)
at addChunk (_stream_readable.js:290:12)
at readableAddChunk (_stream_readable.js:271:11)
at TLSSocket.Readable.push (_stream_readable.js:226:10)
at TLSWrap.onStreamRead (internal/stream_base_commons.js:166:17) {
errorLabels: [ 'TransientTransactionError' ],
operationTime: Timestamp { _bsontype: 'Timestamp', low_: 2, high_: 1591772061 },
ok: 0,
errmsg: 'WriteConflict',
code: 112,
codeName: 'WriteConflict',
'$clusterTime': {
clusterTime: Timestamp { _bsontype: 'Timestamp', low_: 2, high_: 1591772061 },
signature: { hash: [Binary], keyId: [Long] }
},
name: 'MongoError',
[Symbol(mongoErrorContextSymbol)]: {}
}
提前感谢