node.js - Nodejs - 并发或并行 API 调用在 mongodb 中创建重复条目
问题描述
直截了当:
我在 1 秒内从同一台机器(用户)或不同机器(用户)单击按钮两次。它正在创建两个文档(重复)。
简而言之,可能是如何并行或同时处理多个 API 调用。
我怀疑的是:
- Nodejs 收集 API 调用 ->
db.find(name)
-> Not Found-> 创建新文档(它正在运行)
在完成上述文档创建之前。Nodejs 开始执行下一个 API 调用。
- 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 } )
推荐阅读
- ruby-on-rails - Rails 5:grouped_collection_select
- python - 不明白 Python 中 LED 条形矩阵的等离子效应对二维阵列的 Sin 方程
- sql-server - 需要在 SQL Server 中对这些列进行 Db 审核信息查询
- c# - 从类中获取所有静态属性
- javascript - 切换除当前单击元素之外的类
- javascript - 多个嵌套选项卡
- excel - 我可以用文本框设置变量的名称吗?VBA Excel
- python-2.7 - 如何对 Python ConfigParser 进行单元测试
- javascript - Javascript keydown 事件没有给我 EDGE 中的字符 @
- python - 字典列表 - 改进?