首页 > 解决方案 > 在 session.withTransaction 中返回一个节点 js 响应

问题描述

我正在使用 session.withTransaction() 在 mongo db 中执行多个更新。请注意,promiseArray 有多个 Stock.update 语句来更新库存数量。

await session.withTransaction(
              async () => {
                promiseResults = await Promise.all(promiseArray);

                for (const result of promiseResults) {
                  recordCounter++;
                  if (result.nModified === 1) {
                    stockItemsNoUpdate.push(goodReturnSummary[recordCounter]);
                  }
                }

                if (stockItemsNoUpdate.length > 0) {
                  return res.status(200).send(response);
                }

                existingGoodReturnSummary = GoodReturn.build({
                  _id: sheetId,
                  goodReturnSummary,
                  agency,
                  createdBy,
                });
                await existingGoodReturnSummary.save({ session: session });

                existingGoodReturnSummary = await GoodReturn.calculateTotalGoodReturnAmount(
                  existingGoodReturnSummary,
                  session
                );
              },
              {
                readPreference: 'primary',
                readConcern: { level: 'local' },
                writeConcern: { w: 'majority' },
              }
            );

如果 stockItemsNoUpdate.length > 0 我需要中止此事务并发送响应。通过下面的代码段完成。

if (stockItemsNoUpdate.length > 0) {
  return res.status(200).send(response);
}

但由于以下错误,我不能这样做

在此处输入图像描述

关于如何解决这个问题的任何想法?

干杯

标签: node.jsmongodb

解决方案



推荐阅读