node.js - Mongoose 多文档交易不起作用

标签 node.js mongodb typescript mongoose

我有两个相关的文档。我必须将一个文档的 _id 保存到另一文档中。我正在使用事务一次更新两个文档,以便数据不会损坏。

但问题是文档没有得到更新。这是我的代码

const session = await mongoose.startSession();
session.startTransaction();

try {
    MoneyTransactions.updateMany({
        _id: { $in: [id1,id2 ]}
    }, {
            settledOnImport: importTransaction._id
        }, { session }
    )

    Imports.update(
        { _id: importTransaction._id },
        {
            settledOn: Date.now()
        }, { session })

    await session.commitTransaction()

    return importTransaction;

}

catch (e) {

    return null;

}

finally {
    session.endSession();
}

有什么想法吗?任何替代方案也会有所帮助。 这是我正在使用的版本

Node 版本-v10.15.3

Mongoose -5.5.4

typescript - ^3.4.4

mongodb-4.0.1

最佳答案

方法MoneyTransactions.updateManyImports.update是异步方法。在它们前面添加关键字 await,否则您将无缘无故地提交事务。

关于node.js - Mongoose 多文档交易不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916178/

相关文章:

mysql - 穆德尔。类(class)定义用户角色出现问题

mongodb - mongorestore 命令替换现有记录?

javascript - 将 Jest 升级到 v28 - 找不到错误测试环境 jest-environment-jsdom

typescript - Reflect.getMetadata 和 Reflect.getOwnMetadata 有什么区别?

javascript - Express Promise Chain如何发送响应并结束Promise Chain流程?

file-upload - 在 NodeJs 中上传文件时停止请求

node.js - nodejs/npm/webpack : adding dependency as "file:/some/path" doesn't work

c# - 将 FilterDefinition<TDocument> 转换为可以在 mongo shell 中运行的常规 json mongo 查询

java - 在 Mongodb 中使用正则表达式

typescript - 推送管理器 - 更改订阅事件