如何在 NODEJS 中执行此操作?

How to do this in NODEJS?

这没有代码,因为现在是半夜,醒来时有一个问题。

我有一个 node.js 网络应用程序并使用 firebase 来验证用户名(电子邮件) 和密码,还有一个令牌,它是数据库中的应用内货币。假设用户 1 在他的帐户中有 50 个令牌,这些令牌保存在 fire base 数据库中,用户 2 在他的数据库中有 20 个令牌。

用户 1 决定向用户 2 发送 20 个令牌。

是否可以从数据库中提取数量 50 减去 20 并打印剩余的新值 (20) 个令牌并添加到用户 2 20 个令牌,因此他现在总共在数据库中保存了 40 个令牌。

我也有创建一个 class 并使它成为钱包并将代币存储在钱包中的想法,我大致知道如何做到这一点,但代币值存储在哪里?如何在用户之间建立与 add/subtract 个令牌的连接?

如果你这样做呢?你会怎么做?

Ps。我不是要求为我编写代码,我只是似乎真的无法在脑海中找到解决方案,它一直困扰着我,以至于我无法入睡。我将尝试此处的建议并继续发布代码片段以查看它的性能并希望将来对我和其他人有所帮助。

Ps。钱包是非加密的,只是应用程序货币令牌

根据我在处理此类问题时遇到的用例,扣除和转移以及信用的解决方案非常简单,因为您可能已经有了想法。

但关注的重点是我们如何处理在紧迫的时间内完成的涉及同一方的故障、并发和重叠交易。这会使简单的交易复杂化,因为在这种情况下,您处理的方式变得很重要。

对于这样的解决方案,其中每个事务都必须是原子的,我们不能承受不完整的事务,我们需要一个无损且高度可重现的基于事务的系统。

因此我会推荐 CQRS(命令查询责任分离)模式,因为这有助于执行事务的回滚和重试。此外,它有助于合并和汇总以及验证每笔交易。

因此,基于事件的系统可以为每个交易引发独立事件,这些事件将像交易日志一样存储。然后,这些日志将由您的交易处理器获取,它可以是一个功能、模块或服务。

此服务然后可以执行代币转移的相关交易,还可以引发分析、验证和合并事件。

俗话说一图抵一千字,给你一张。

PS- 这绝不是一个完整的解决方案,而是实现最终解决方案的一般策略。此外,还有很多其他方法可以完成,但以上是基于我的经验和思维方式