Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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_Database Connection - Fatal编程技术网

Javascript 如何在NODEJS中实现这一点?

Javascript 如何在NODEJS中实现这一点?,javascript,node.js,database-connection,Javascript,Node.js,Database Connection,这没有代码,因为现在是半夜,醒来时有一个问题 我有一个node.js web应用程序,使用firebase作为身份验证用户名(电子邮件) 和密码,还有一个令牌,它是数据库中的应用程序内货币。假设用户1的帐户中有50个令牌,这些令牌保存在fire base数据库中,用户2的数据库中有20个令牌 用户1决定向用户2发送20个令牌 是否可以从数据库substract 20中提取amount 50并打印剩余的新值(20)令牌,并将20个令牌添加到用户2,这样用户现在在数据库中总共保存了40个令牌 我还想

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

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

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

是否可以从数据库substract 20中提取amount 50并打印剩余的新值(20)令牌,并将20个令牌添加到用户2,这样用户现在在数据库中总共保存了40个令牌

我还想到了创建一个类,将它做成一个钱包,并将代币存储在钱包中,我大致知道如何做到这一点,但代币的价值存储在哪里?如何建立连接以在用户之间添加/减去令牌

如果你要这么做?你会怎么做

顺便说一句,我不是要求为我写代码,我只是在脑子里似乎真的找不到解决办法,它一直困扰着我,以至于我无法入睡。我将尝试从这里的建议,并不断张贴代码片段,看看它的表现如何,并希望在未来帮助我和其他人


另外,钱包是非加密的,只是应用程序内的货币代币

从我在处理此类问题时遇到的使用案例来看,扣除、转账和贷记的解决方案非常简单,因为您可能已经有了想法

但关键的关注点是我们如何处理故障、并发和重叠事务,这些事务涉及在紧张时期完成的同一方。这会使过于简单的事务复杂化,因为在这种情况下,处理方式变得非常重要

对于这样的解决方案,每个事务都必须是原子的,并且我们不能承担不完整的事务,我们需要一个基于事务的无损和高度可复制的系统

因此,我建议使用CQRS(命令查询责任分离)模式,因为这将有助于执行事务的回滚和重试。此外,它还有助于整合和聚合以及验证每个事务

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

然后,该服务可以执行令牌转移的相关事务,并引发分析、验证和整合事件

正如人们所说,一幅画抵得上千言万语,这里有一幅送给你

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