我有一个 React 功能组件,它执行以下操作:
import React, { useEffect, useState } from "react";
import axios from "axios";
import mytable from "./mytable";
const baseRawData = [
{ name: "name", value: "John Doe" },
{ name: "sex", value: "M" }
];
export default function FuncComp() {
let [rawData, setRawData] = useState(baseRawData);
let [mappedData, setMappedData] = useState([]);
let [apiFilter, setApiFilter] = useState("all");
useEffect(() => {
setMappedData(
rawData.map(e => ({
...e
// Some logic
}))
); …Run Code Online (Sandbox Code Playgroud) 我有一个使用 TypeORM 的 NodeJS 后端服务器,每次更新实体时我都需要执行插入。所以我的班级中有以下代码BaseModel:
abstract class BaseModel {
// ...
@BeforeUpdate()
private async InsertBeforeUpdate() {
let entToSave: BaseModel;
// Create the entity that I want to insert
await getManager().save(entToSave);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的 DAL 中:
const saveUser = (user: User) => {
return new Promise((resolve, reject) => {
getManager().transaction(async manager => {
manager
.save(user)
.then(() => {
resolve('yay');
})
.catch(() => {
reject(new Error('boo'));
});
});
});
};
Run Code Online (Sandbox Code Playgroud)
然而,这带来了一个问题。如果保存操作失败并且 saveUser Promise 被拒绝,则 @BeforeUpdate 中执行的插入在同一事务上不存在,并且将保存到数据库。
如何在 @BeforeUpdate 侦听器函数中访问所述事务管理器?