flo*_*nkt 2 transactions mongoose
如何在猫鼬中使用 Model.findOneAndUpdate() 进行事务?
我有一个会话对象,我想将 findOneAndUpdate 操作作为事务的一部分提交,但不知道如何传递我的会话对象。
const session = params?.mongoose?.session;
const doc = await this.Model.findOneAndUpdate(
{ sequence: sequence },
{
$setOnInsert: { sequenceLength: sequenceLength },
$inc: { value: 1 }
},
{ upsert: true, new: true }
);
Run Code Online (Sandbox Code Playgroud)
该问题是 TypeScritp 问题。类型定义不完整,QueryFindOneAndUpdateOptions
接口应包括session?: ClientSession;
我在这里提出了一个问题:https ://github.com/Automattic/mongoose/issues/8396
基本上,您必须简单地将会话作为参数传递,但目前这会引发 ts 错误。
const session = params?.mongoose?.session;
const doc = await this.Model.findOneAndUpdate(
{ sequence: sequence },
{
$setOnInsert: { sequenceLength: sequenceLength },
$inc: { value: 1 }
},
{ upsert: true, new: true, session: session }
);
Run Code Online (Sandbox Code Playgroud)