首页 > 解决方案 > Nodejs - 并发或并行 API 调用在 mongodb 中创建重复条目

问题描述

直截了当:

我在 1 秒内从同一台机器(用户)或不同机器(用户)单击按钮两次。它正在创建两个文档(重复)。

简而言之,可能是如何并行或同时处理多个 API 调用。

我怀疑的是:

  1. Nodejs 收集 API 调用 -> db.find(name)-> Not Found-> 创建新文档(它正在运行)

在完成上述文档创建之前。Nodejs 开始执行下一个 API 调用。

  1. Nodejs 收集 API 调用 -> db.find(name)-> 未找到 -> 创建新文档。

示例代码: 这里创建了两个同名的帐户。

    const userPresent = await User.findOne({
      phoneNumber: data.phoneNumber,
    });
    if (userPresent) {
      throw new CustomError("OIC_ERROR_00027", "User already present");
    }
    // new account created
    const newAccount = await new Account({
      name: data.name,
    }).save();

标签: node.jsmongodbexpressasynchronousduplicates

解决方案


您可以尝试为您的产品名称创建一个唯一索引。这将导致您的产品名称没有任何重复。

db.collection.createIndex( {"name":1} , { unique: true } )

推荐阅读