簡體   English   中英

Nodejs - 並發或並行 API 調用在 mongodb 中創建重復條目

[英]Nodejs - concurrent or parallel API calls creates duplicates entries in mongodb

直截了當:

我在 1 秒內從同一台機器(用戶)或不同的機器(用戶)單擊按鈕兩次。 它正在創建兩個文檔(重復)。

簡而言之可能是如何並行或並發地處理多個 API 調用。

我懷疑的是:

  1. Nodejs收集API調用-> db.find(name) -> Not Found-> Creating New document (Its running)

在上述文件創建完成之前。 Nodejs 開始執行下一個 API 調用。

  1. Nodejs 收集 API 調用 -> db.find(name) -> Not Found -> Creating New document。

示例代碼:這里創建了兩個同名帳戶。

    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選項。 所以數據庫沒有在貓鼬模式中使用indexing命令。 我刪除了autoindex: false並遵循了@koodies 指導。 感謝現在工作!

但是當我嘗試創建連接並像db.model("modelName")一樣使用它時db.model("modelName")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM