Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Nodejs&;类型事务混淆_Javascript_Node.js_Sql Server_Typeorm - Fatal编程技术网

Javascript Nodejs&;类型事务混淆

Javascript Nodejs&;类型事务混淆,javascript,node.js,sql-server,typeorm,Javascript,Node.js,Sql Server,Typeorm,我有点困惑,无法从打字文档中解决 这是我用作请求处理程序的函数,它使用从getManager()获取的事务 因此,当我为最后一次保存放置catch函数时(只有它失败并且前两个函数正确运行),它会给出“queryrunner已发布。无法再运行查询”错误 当我像这样更改流时,它会起作用,我真的很想知道原因,因为在中有针对不同实体类型的保存操作,这也是我正在尝试做的 static makeTransaction = async (req: Request, res: Response) => {

我有点困惑,无法从打字文档中解决

这是我用作请求处理程序的函数,它使用从getManager()获取的事务

因此,当我为最后一次保存放置catch函数时(只有它失败并且前两个函数正确运行),它会给出“queryrunner已发布。无法再运行查询”错误

当我像这样更改流时,它会起作用,我真的很想知道原因,因为在中有针对不同实体类型的保存操作,这也是我正在尝试做的

static makeTransaction = async (req: Request, res: Response) => {
    try {
        // check if the account ids are same
        const { senderAccountId, receiverAccountId, amount } = req.body;

        let senderAccount = await findEntityById(getRepository(Account), senderAccountId);
        let receiverAccount = await findEntityById(getRepository(Account), receiverAccountId);
        senderAccount.balance -= amount;
        receiverAccount.balance += amount;
        await validateOrReject(senderAccount);
        await validateOrReject(receiverAccount);
        const tempEntity = MyEntity.create({
            amount,
            receiverAccount,
            senderAccount,
        });
        await validateOrReject(tempEntity);

        const transactionRes = await getManager().transaction(async transactionManager => {
            return transactionManager.save([tempEntity, senderAccount, receiverAccount]);
        });

        return res.status(200).json({
            error: null,
            data: transactionRes[0],
        });
    } catch (e) {
        console.log(e);
        return res.status(400).json({ error: "Transaction wasn't successfull" });
    }
};
我想了解原因,并感谢任何想法或帮助,提前谢谢你

static makeTransaction = async (req: Request, res: Response) => {
    try {
        // check if the account ids are same
        const { senderAccountId, receiverAccountId, amount } = req.body;

        let senderAccount = await findEntityById(getRepository(Account), senderAccountId);
        let receiverAccount = await findEntityById(getRepository(Account), receiverAccountId);
        senderAccount.balance -= amount;
        receiverAccount.balance += amount;
        await validateOrReject(senderAccount);
        await validateOrReject(receiverAccount);
        const tempEntity = MyEntity.create({
            amount,
            receiverAccount,
            senderAccount,
        });
        await validateOrReject(tempEntity);

        const transactionRes = await getManager().transaction(async transactionManager => {
            return transactionManager.save([tempEntity, senderAccount, receiverAccount]);
        });

        return res.status(200).json({
            error: null,
            data: transactionRes[0],
        });
    } catch (e) {
        console.log(e);
        return res.status(400).json({ error: "Transaction wasn't successfull" });
    }
};