这里没有代码,因为现在是半夜,带着问题醒来。
我有一个 node.js Web 应用程序并使用 firebase 进行身份验证用户名(电子邮件) 和密码,还有一个 Token,它是数据库中的应用内货币。假设用户 1 的帐户中有 50 个代币,这些代币保存在 fire base 数据库中,用户 2 的数据库中有 20 个代币。
用户 1 决定向用户 2 发送 20 个代币。
是否可以从数据库中提取金额 50 减去 20 并打印剩余的新值 (20) 个代币,并向用户 2 添加 20 个代币,这样他现在数据库中总共保存了 40 个代币。
我也有创建一个类并将其作为钱包并将代币存储在钱包中的想法,我大致知道如何做到这一点,但是代币值存储在哪里?如何建立连接以在用户之间添加/减去 token ?
如果你要这样做呢?你会怎么做?
诗。我并不是要求为我编写代码,我只是似乎真的无法在脑海中找到解决方案,而且它一直困扰着我,以至于我无法休眠。我将尝试这里的建议,并继续发布代码片段以查看其性能如何,并希望将来对我和其他人有所帮助。
诗。钱包不是加密货币,只是应用程序货币 token
最佳答案
从我在处理此类问题时遇到的用例来看,扣除、转移和信用的解决方案非常简单,因为您可能已经有了一个想法。
但关注的关键点是我们如何处理在紧张的时间内完成的涉及同一方的故障、并发和重叠交易。这可能会使简单的交易变得复杂,因为在这种情况下,您的处理方式变得很重要。
对于这样的解决方案,每个事务都必须是原子的,并且我们无法承受不完整的事务,我们需要一个无损且高度可重复的基于事务的系统。
因此,我建议使用 CQRS(命令查询职责分离)模式,因为这将有助于执行事务的回滚和重试。此外,它还有助于合并和聚合以及每笔交易的验证。
因此,基于事件的系统可以为每个事务引发独立的事件,这些事件将像事务日志一样存储。然后,这些日志将由您的事务处理器拾取,该事务处理器可以是功能、模块或服务。
然后,该服务可以执行代币转让的相关交易,并引发分析、验证和整合事件。
俗话说一图胜千言,这里有一张适合您。
PS-这绝不是一个完整的解决方案,而是实现最终解决方案的总体策略。另外,还有很多其他方法可以完成此任务,但以上是基于我的经验和思维方式
关于javascript - 如何在 NODEJS 中执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59450434/