Sto provando a memorizzare un piccolo file in un db postgres usando il modulo node-postgres. Capisco che dovrei usare il tipo di dati bytea per farlo. Il problema che sto avendo è quando faccio qualche cosa come:Memorizzare un file in postgres usando node-postgres
fs.readFile path, (err, data) ->
client.query 'UPDATE file_table SET file = $1 WHERE key = $2', [data, key], (e, result) ->
....
Il contenuto della colonna file nel db è: \ x e nulla viene memorizzato. Se cambio il buffer dei dati in esadecimale i.e. data.toString ('hex') il file viene memorizzato ma tutta la formattazione va persa quando rileggo il file.
Qual è il modo corretto di archiviare un file in postgres utilizzando il modulo node-postgres?
Cosa vi aiuterà qui è quello di esaminare i dati che viene inserito nella dati base usando 'psql'. Vedi se è corretto lì. Questo ti dirà se il problema è con l'inserimento dei dati correttamente, o con la lettura di nuovo. Devi anche menzionare la tua versione Pg; il formato predefinito 'bytea' è cambiato da' escape' a 'hex' in 9.0. –
Quale versione 'node-postgres' stai usando? Sembra che supporti bytea circa un anno fa (https://github.com/brianc/node-postgres/pull/38), quindi dovresti essere in grado di passare solo un buffer. –
Grazie per i commenti. Sto usando node-postgres v. 0.8.6 e qualunque versione di postgres usata da Heroku. Presumibilmente è un 9. qualcosa. Ho guardato il db e l'unico dato nella colonna di dati è un \ x. Ho trovato un rimedio cambiando il campo in un campo di testo e memorizzando il file come una stringa esadecimale. Non penso che sia comunque una grande idea. – Clive