I’m trying to store a small file into a postgres db using the node-postgres module. I understand that I should use the bytea data type to do this. The problem I’m having is when I do some thing like:
fs.readFile path, (err, data) ->
client.query 'UPDATE file_table SET file = $1 WHERE key = $2', [data, key], (e, result) ->
....
The contents of the file column in the db is: \x and nothing is stored. If I change the data buffer to hex i.e. data.toString(‘hex’) the file is stored but all formatting is lost when I read the file back out.
What is the correct way of storing a file into postgres using the node-postgres module?
The trick is to encode as hex and prepend the file with \x. Reading it back out is indeed supported via parseByteA that returns a buffer:
https://github.com/brianc/node-postgres/blob/master/lib/textParsers.js
Here is what I did to read in an image from disk on postgres 9.2.2 and node.js 0.8.16 and node-postgres (npm package=’pg’) 0.11.2:
and what I did to write it back out