【发布时间】:2017-08-13 18:34:03
【问题描述】:
我正在我的节点应用程序中实现条带 API。我遇到的问题是,如果我非常快速地多次单击提交按钮,则会多次调用 api,并且条带客户突然有多个订阅和费用。
这种情况是当用户拥有一个没有订阅的条带客户帐户时,因为他们之前已取消订阅。现在他们想重新订阅一个新计划,因为旧计划已被删除。
我的代码逻辑如下:
1. Submit form
2. I retrieve the user from my mongo db
3. I retrieve the customer from stripe using a stored customer id (api call)
4. I create a customer subscription (api call)
5. I update the stripe customer object with their credit card (api call)
6. Respond back to user
- 以上所有操作都是使用异步瀑布完成的,随后的每个异步调用都在一个单独的函数中
我想要什么:
- 在第 3 步和第 4 步之间,我想检索客户并检查他或她是否已经订阅,如果用户已经有活动订阅,则防止第 4 步和第 5 步发生。
问题:
- 我正在测试用户多次单击提交按钮并最终被收取多次订阅费用的场景。我相信它与节点如何一次发送多个请求有关,因为它是异步的,我想检查一个 api 调用以检查是否设置了一些东西需要太长时间,并且节点在发送所有请求时不会等待请求。
我该如何解决这个问题。
注意:当然,我有前端处理这个以防止用户多次提交表单,但这并不理想,也不希望这是我唯一的防线。
谢谢
【问题讨论】:
标签: javascript node.js api asynchronous stripe-payments