Nodejs-并发或并行的API调用在mongodb中创建重复的条目



直接向前:

在1秒的时间内,我从同一台机器(用户(或从不同的计算机(用户(点击了两次按钮。它正在创建两个文档(重复(。

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

我怀疑:

  1. Nodejs收集API调用->;db.find(name)->找不到->创建新文档(正在运行(

在完成上述文档创建之前。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();

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

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

问题是我在连接MongoDB时在选项中给定了autoindex: false。所以DB没有采用mongoose模式中的indexing命令。我移除了autoindex: false,并遵循@koodies的指导。感谢现在的工作!

但当我尝试创建连接并像db.model("modelName")一样使用它时,它不起作用

最新更新