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/