mongoose-double icon indicating copy to clipboard operation
mongoose-double copied to clipboard

fix: prevent CastError being triggered by literal NaN

Open jdbdnz opened this issue 2 years ago • 2 comments

Overview

NaN is a valid value in MongoDB for Number type attributes (i.e. doubles). This change is necessary to avoid superfluous errors when loading records with NaN values in number fields.

Previous behavior:

  • "harold" => CastError
  • NaN => CastError
  • 1 => no error

New behavior:

  • "harold" => CastError
  • NaN => no error
  • 1 => no error

Changes

  • change the conditions for CastError to throw for anything which resolves to a NaN, but not for literal NaNs

Thoughts

I think the decision to accept NaN as a valid number type in MongoDB is dubious, I don't see a valid reason for wanting to store it. That said, the world is imperfect and so is the data we deal with.

My judgement here is that it is better to handle the imperfections gracefully. Feel free to close if you don't agree, and I'll just keep using my fork.

jdbdnz avatar Aug 09 '23 22:08 jdbdnz

I could see a case being made for removing the CastError entirely; instead writing non-numbers as NaN. I don't want to make it though.

jdbdnz avatar Aug 09 '23 22:08 jdbdnz

@vkarpov15 are you interested in this change, or should I close this?

jdbdnz avatar Jun 17 '24 20:06 jdbdnz