首頁  >  問答  >  主體

轉換錯誤 - 無法將值“NaN”(類型為數字)轉換為數字,發生在路徑“totalOrders”處

我為我的專案建立了一個API,但在一個端點上出現了一個錯誤,我無法修復。

const fullOrdersForService = service.totalOrders
const updatedFullOrdersForService = fullOrdersForService + 1
const updateService = await Service.findOneAndUpdate({_id:serviceId}, { totalOrders: updatedFullOrdersForService },{new:true})

絕對在上面的程式碼中,我檢查了service.totalOrders的類型,輸出為數字,而且service.totalOrders來自一個模式,所以沒有任何可能將其類型更改為字串或NaN。我檢查了它是否為NaN,結果也為false,它不是NaN。我仍然想知道這個錯誤是如何發生的。 但是出現了以下錯誤。

messageFormat: undefined,
stringValue: '"NaN"',
kind: 'Number',
value: NaN,
path: 'totalOrders',
reason: AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(!isNaN(val))

我的Service.totalOrders的模式可以在下面看到。

totalOrders:{
  type:Number,
  required:true,
  default:0
}

我的Seller.totalOrders的模式可以在下面看到。

totalOrders:{
  type:Number,
  required:true,
  default:0
}
const fullOrdersForService = service.totalOrders  
const updatedFullOrdersForService = fullOrdersForService + 1 
const updateService = await Service.findOneAndUpdate({_id:serviceId}, { totalOrders: updatedFullOrdersForService },{new:true})

我剛剛嘗試了這段程式碼,出現了我上面提到的錯誤。

P粉493534105P粉493534105381 天前506

全部回覆(1)我來回復

  • P粉608647033

    P粉6086470332023-09-09 13:46:39

    首先使用console.log(fullOrdersForService )console.log(updatedFullOrdersForService )來檢查它是數字還是字串

    如果updatedFullOrdersForService是正確的但是是字串,在更新之前使用parseInt(updatedFullOrdersForService )

    #

    回覆
    0
  • 取消回覆