Skip to content

Issue with isInstance #241

@hdoan741

Description

@hdoan741

I'm receiving a BigInteger value from snowflake-sdk & I need to convert it to JS Number or JS Big Int to serialize it correctly. When I try to use bigInt.isInstance(value), it always return false. Can you help me understand what's wrong?

// rows = snowflakeConn.execute({binds, sqlText})
// rows contains some BigInteger value 
// cellValue extracted from rows

import bigInt from 'big-integer'
bigInt.isInstance(cellValue) # false

# { cellValue: Integer { value: 159100n }, isBigInt: false }
# { cellValue: Integer { value: 159200n }, isBigInt: false }

I've also tried the following import & it didn't work either/

import * as bigInt from 'big-integer'

As far as I know, they creates bigInt value like this:
https://github.com/snowflakedb/snowflake-connector-nodejs/blob/21f884c0a050f536fb1a87ddcc28cacaaeb71daf/lib/connection/result/column.js#L303

Currently, I'm using a workaround like this:

  return typeof value === 'object' && value.constructor.name === 'Integer'

On a separate note, It would also be useful to have a toJSValue() that return the underlying value in JS type. toJSNumber is useful but it only works correctly for non-big-int numbers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions