mongoose 如何保护端点,使同一用户不能多次调用它?

daolsyd0  于 2023-06-23  发布在  Go
关注(0)|答案(1)|浏览(99)

我有一个端点,它可以在NestJS服务器上创建文档。但如果用户同时多次调用它,将创建多个文档。但我有一个限制,每个用户只能创建2个文档。如果服务器同时收到两个对同一端点的请求,则限制检查不起作用,因为它检查数据库中的文档编号,如果大于=2,则会抛出错误。但是这个检查在~同一时间运行,脚本只能看到数据库中的一个文档,如果用户试图同时发出多个请求,服务器会创建两个文档。在NestJS中处理这种情况的最好方法是什么?我不想允许创建2个以上的文档,并在同一时间处理多个请求。

fiei3ece

fiei3ece1#

在嵌套应用程序中创建数据结构或内存Map,以跟踪已经启动文档创建过程的用户ID。
在创建文档之前,请检查数据结构或Map中是否已经存在用户ID。如果出现,则可以取消请求或返回适当的错误响应,指示该用户ID的文档创建已经在进行中。
开始创建文档后,将用户ID添加到数据结构或Map中,以指示该过程正在进行。
重要提示:此解决方案假定您的服务器应用程序在单个示例中运行!如果您有多个示例(例如在无服务器环境中),这两个请求可以命中不同的示例。
在这种情况下,您可以将信息存储在数据库中,而不是存储在内存中!

相关问题