You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Postgres与NodeJS将Buffer更新至bytea类型列的语法问题

解决方案

你之前的写法存在两处核心问题:

  • 直接将Buffer嵌入SQL模板字符串会触发Buffer的隐式toString()转换,生成的内容完全不符合Postgres bytea类型的输入规范
  • 硬编码拼接SQL值还存在SQL注入的安全风险

node-postgres原生支持将Buffer作为查询参数传入,会自动完成到bytea类型的格式转换,不需要你手动做任何编码处理,正确写法如下:

await pool.query(
  `UPDATE image
   SET data = $1
   WHERE id = $2`,
  // 按参数顺序传入值,Buffer对象直接传递即可
  [imageData, '00413567-fdd7-4765-be30-7f80c2d8ce57']
)

该实现完全符合你的所有限制:

  • 不需要依赖任何外部文件
  • 不需要修改你已准备好的Buffer值格式
  • 完全基于当前node-postgres技术栈实现,无需更换组件
  • 写入后的数据格式与库中已有其他系统写入的bytea格式完全一致,查询时返回的也是标准Buffer对象

内容的提问来源于stack exchange,提问作者Richard van Hees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:45:04