我正在尝试设置 Apollo GraphQL 服务器,并通过 Prisma 访问 Postgresql 后端。
我想要一个“1 个客户端请求”-“1 个数据库事务”,即使 GraphQL 请求包含一系列例如突变。
我的感觉是 Apollo GraphQL 上下文和 Prisma 交互式事务的结合应该使这成为可能,但我想知道是否有人知道实现这一点的简单示例(我在选项和类型中迷失了......),或者是否有更好的解决方案可以实现 1 req/1 txn 方法,这也是我感兴趣的学习
欢迎任何指点或提示
大量发送!
彼得
我设法通过使用包装在 Prisma 交互式事务中的 Apollo graphql 函数并从快速处理程序调用它来解决这个问题。
app.post('/gql2', async (req, res) => {
const { query, variables } = req.body;
try {
const result = await prismaClient.$transaction(async (tx) => {
return await graphql({
schema,
source: query,
variableValues: variables,
contextValue: tx,
});
});
res.json(result);
} catch (error:any) {
console.error(error);
res.status(500).send(error.message);
}
});
在解析器中,可以轻松获取 Prisma tx 并将其用于所有数据库访问
不确定我是否可以不用节点快速绕道,但就像现在一样,似乎没问题
彼得