我想指出我是 Graphql 的新手,我可能遗漏了一些明显的东西。我想做一些类似于商店订单系统的事情。当客户买东西时,会做两件事:(1)钱从他的钱包里减少,(2)订单被添加到他的订单历史中。到目前为止,我将钱包和订单历史建模为 GraphQL 模式中的两种类型。
第 1 点。理想情况下,我想进行交易。如果钱包更新或订单创建失败,整体应该失败。据我了解,如this answer中所指出的那样,要归档它,只需有一个同时进行更新的突变就足够了。那么,我是否正确理解了它,并且这样的事情就像一个事务(在失败的情况下回滚)?
mutation {
update_wallet(...) {...}
add_to_history(...) {...}
}
Point 2. 其次,我想存储每个客户购买的平均数量。为此,我正在考虑使用增量平均函数(这个),所以我正在考虑存储当前平均值并使用公式对其进行更新。但是,我不明白如何“安全”地做到这一点(没有可能的竞争条件)。据我了解,GraphQL 中有一个原子增量选项,仅此而已。所以我想我可以存储 sum_of_all_the_items 和 number_of_purchases 以计算每个请求的划分。这可能很好,即使它看起来不是最干净的解决方案。特别是因为这些数字将无限增长并最终(即使这是一个非常不幸的情况)溢出。
谢谢