{"record":{"id":"b65a76ca667f2843","repo":"mongodb/node-mongodb-native","slug":"expected-name-to-be-stringified-int-value-got","errorCode":null,"errorMessage":"Expected ${name} to be stringified int value, got: ${value}","messagePattern":"Expected (.+?) to be stringified int value, got: (.+?)","errorType":"exception","errorClass":"MongoParseError","httpStatus":null,"severity":"error","filePath":"src/connection_string.ts","lineNumber":193,"sourceCode":"}\nfunction getBoolean(name: string, value: unknown): boolean {\n  if (typeof value === 'boolean') return value;\n  switch (value) {\n    case 'true':\n      return true;\n    case 'false':\n      return false;\n    default:\n      throw new MongoParseError(`${name} must be either \"true\" or \"false\"`);\n  }\n}\n\nfunction getIntFromOptions(name: string, value: unknown): number {\n  const parsedInt = parseInteger(value);\n  if (parsedInt != null) {\n    return parsedInt;\n  }\n  throw new MongoParseError(`Expected ${name} to be stringified int value, got: ${value}`);\n}\n\nfunction getUIntFromOptions(name: string, value: unknown): number {\n  const parsedValue = getIntFromOptions(name, value);\n  if (parsedValue < 0) {\n    throw new MongoParseError(`${name} can only be a positive int value, got: ${value}`);\n  }\n  return parsedValue;\n}\n\nfunction* entriesFromString(value: string): Generator<[string, string]> {\n  if (value === '') {\n    return;\n  }\n  const keyValuePairs = value.split(',');\n  for (const keyValue of keyValuePairs) {\n    const [key, value] = keyValue.split(/:(.*)/);\n    if (value == null) {","sourceCodeStart":175,"sourceCodeEnd":211,"githubUrl":"https://github.com/mongodb/node-mongodb-native/blob/dce7939f86fb283e167ad709955abedb7bf23124/src/connection_string.ts#L175-L211","documentation":"Integer URI options (e.g. srvMaxHosts, serverSelectionTimeoutMS, connectTimeoutMS) must parse as an integer. getIntFromOptions calls parseInteger; if it returns null (non-numeric, empty, or fractional), this error is thrown with the offending value.","triggerScenarios":"Supplying a non-integer value to an int option in the URI, e.g. 'srvMaxHosts=three', 'connectTimeoutMS=30s', or 'serverSelectionTimeoutMS=12.5'.","commonSituations":"Unit suffixes ('30s', '5ms') that the driver does not parse, locale-specific formatting, or copy-pasting human-readable durations from docs.","solutions":["Provide a bare integer number of milliseconds (or the option's documented unit) with no suffix.","Double-check the option name's expected unit in the driver docs."],"exampleFix":"// before\nnew MongoClient('mongodb://h/db?connectTimeoutMS=30s');\n// after\nnew MongoClient('mongodb://h/db?connectTimeoutMS=30000');","handlingStrategy":"validation","validationCode":"function assertIntOption(name: string, value: unknown) {\n  if (!/^[-+]?\\d+$/.test(String(value))) {\n    throw new Error(`${name} must be an integer, got: ${value}`);\n  }\n}","typeGuard":"function isStringifiedInt(v: unknown): v is string | number {\n  return /^[-+]?\\d+$/.test(String(v));\n}","tryCatchPattern":null,"preventionTips":["Omit unit suffixes from URI options; use raw milliseconds.","Build a wrapper that converts typed config objects to validated URIs."],"tags":["connection-string","validation","parsing","integer"],"backgroundTag":null,"analyzedSha":"dce7939f86fb283e167ad709955abedb7bf23124","analyzedAt":"2026-08-11T04:54:53.215Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}