Base64 encoding of date fails
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
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
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())
@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