我正在構建一個接收webhook數據(shopify訂單)並將它們保存到關係型mysql數據庫的api。每個訂單都有屬於集合(類別)的產品。我將產品與集合關聯起來,或者如果它尚不存在,則創建一個新集合。我碰到的問題是,因爲我不能使用findOrCreate()我首先做一個find(),然後如果沒有找到,我做一個創建。然而,因爲nodejs是異步的,所以如果我立刻得到很多訂單,有時同一個集合不能同時被兩個不同的產品找到,然後在另一個嘗試之前創建它,所以當其他人嘗試創建水線會引發錯誤:Sailsjs錯誤處理與數據庫/水線錯誤
col_id •與col_id
已存在的記錄(405145674
)。
什麼是最好的方法來捕獲這個錯誤,所以我可以做另一個find(),所以函數返回適當的集合,而不是一個未定義?我可以這樣做:
if (err){ findmethodagain(); }
但隨後它會嘗試任何錯誤,而不是一個「記錄與該ID已經存在」的錯誤。
嘗試檢查某些唯一代碼或屬性對於此類錯誤是唯一的錯誤,並僅在此類代碼匹配時重試。 – Sangharsh
@Sangharsh當我console.log它說錯誤是什麼問題,但我不知道如何得到錯誤的某些部分。我應該做一個err.search('存在col_id alreasy存在的記錄')還是相同的lodash? – hamncheez
當錯誤被記錄時,只顯示'err.toString()'。檢查err的其他屬性,這些屬性沒有顯示,但在這裏很有用。例如。 err.toPOJO(),err.ValidationError,err.originalError,err.invalidAttributes – Sangharsh