5
我試圖保存一個小文件到一個Postgres存儲在Postgres的文件DB使用節點的Postgres模塊。我明白我應該使用bytea數據類型來完成此操作。我遇到的問題是當我做一些事情時:使用節點的Postgres
fs.readFile path, (err, data) ->
client.query 'UPDATE file_table SET file = $1 WHERE key = $2', [data, key], (e, result) ->
....
db中文件列的內容是:\ x並且不存儲任何內容。如果我將數據緩衝區更改爲十六進制,即data.toString('十六進制'),則會存儲該文件,但是當我將文件讀回時,所有格式都會丟失。
什麼是存儲文件到使用節點的Postgres模塊的Postgres的正確方法是什麼?
什麼會幫助你在這裏是檢查被插入到數據數據base使用'psql'。看看它在那裏是否正確。這將告訴你,如果問題是正確插入數據,或者讀取數據。您還需要提及您的Pg版本;在9.0中默認的'bytea'格式從'escape'改爲'hex'。 –
你使用的是什麼'node-postgres'版本?它看起來像它支持BYTEA爲約一年前(https://github.com/brianc/node-postgres/pull/38),所以你應該能夠只是傳遞的緩衝區。 –
感謝您的意見。我正在使用node-postgres v。0.8.6以及Heroku使用的任何版本的postgres。據推測這是一個9.something。我查看了數據庫,數據列中的唯一數據是\ x。通過將字段更改爲文本字段並將文件存儲爲十六進制字符串,我找到了解決辦法。不過,我認爲這不是一個好主意。 – Clive