node.js - pg-promise 创建列错误

标签 node.js postgresql pg-promise

var name = req.body.name;
db.any('alter table "houseList" add  $1 text', [name])

我尝试在 nodejs 中使用上述代码向 heroku 上的数据库主机添加一个新列,但我不断收到此错误:

error: syntax error at or near "'haha'"

'haha' 是 name 里面的值,有人知道哪里出了问题吗?

最佳答案

您正在对列名称使用无效转义,作为常规字符串变量。

任何模式/表/列名称都称为 SQL 名称,必须使用 "" 进行转义。

pg-promise内这意味着你必须使用它的 SQL Names支持,用 :name: 或 ~ 修饰符。

db.any('alter table "houseList" add  $1:name text', [name])

db.any('alter table "houseList" add  $1~ text', [name])

另外,如果你确定你只使用简单的名字,即没有空格,没有大写,那么你可以直接使用这个名字,不转义,这意味着使用 Raw Text ,通过修饰符 :raw^。但通常不建议这样做,即建议转义名称更安全;)

关于node.js - pg-promise 创建列错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557464/

相关文章:

javascript - Next.js API 路由与 pg-promise

ios - 通过node.js Rest API将图像从ios swift发布到postgres数据库

node.js - 如果从 gulp 启动,则使用 pm2 启动应用程序

PostgreSQL:使用 pgcrypto 加密列

json - 使用 pg-promise 格式化 JSON 输出,将外键封装为对象

java - JDBCPreparedStatement 忽略 $$ ... $$ 查询 block 中的 ' ? '

postgresql - Postgres 全文搜索 (tsvector/tsquery) 的行为不符合预期

node.js - 我在安装 Cordova 时遇到错误

node.js - 通过 Node 浏览器到 S3 文件传输

node.js - 是什么导致 "MongoError: no mongos proxy available at Timeout"?