fullstack-apollo-express-postgresql-boilerplate icon indicating copy to clipboard operation
fullstack-apollo-express-postgresql-boilerplate copied to clipboard

Base64 encoding of date fails

Open andersnylund opened this issue 6 years ago • 3 comments

The following functions caused me problems:

const toCursorHash = string => Buffer.from(string).toString('base64');
const fromCursorHash = string => (Buffer.from(string, 'base64').toString('utf-8');

Apparently the createdAt object passed to toCursorHash() was not of type string. I got the following error message:

TypeError [ERR_INVALID_ARG_TYPE]: The "value" argument must not be of type number. Received type number

Tested what type of the string is with javascripts typeof, and it revealed it to be of type object.

I fixed it with

const toCursorHash = string => Buffer.from(JSON.stringify(string)).toString('base64');
const fromCursorHash = string => JSON.parse(Buffer.from(string, 'base64').toString('utf-8'));

However, I'm curious of why this happened and why it appears to work for others as in the book.

Setup:

  • Windows 10 with WSL Ubuntu 18.04.1 LTS
  • Node v10.14.1

andersnylund avatar Jan 08 '19 16:01 andersnylund

Uh that's odd. I know that I fixed something for this subject before I released the book and hoped that everything should be alright now. Wondering whether anyone else ran into this issue.

CC @tmstani23 @pmosconi

rwieruch avatar Jan 16 '19 01:01 rwieruch

It looks strange to me too. I'm using node 8.11.3 and it works correctly without having to stringify the string. Maybe check if what you are hashing is really a string, i.e.: endCursor: toCursorHash(edges[edges.length - 1].createdAt.toString())

pmosconi avatar Jan 16 '19 07:01 pmosconi

@andersnylund I used the following code and it works fine, I'm in windows 7 with node version 11.4.0

const toCursorHash = string => Buffer.from(string).toString('base64'); const fromCursorHash = string => Buffer.from(string, 'base64').toString('ascii');

cc:: @rwieruch

tmstani23 avatar Jan 16 '19 13:01 tmstani23