首页  >  问答  >  正文

转换错误 - 无法将值“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 天前505

全部回复(1)我来回复

  • P粉608647033

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

    首先使用console.log(fullOrdersForService )console.log(updatedFullOrdersForService )来检查它是数字还是字符串

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

    回复
    0
  • 取消回复