语法错误在$ 1值附近或接近pg-promise node.js

时间:2019-03-14 19:52:22

标签: javascript node.js parameters pg-promise

我有这个代码

this.createtablePy = function(){
 db.none("CREATE TABLE IF NOT EXISTS $1 ( $2 serial NOT NULL, data jsonb", ["pyTable", "id_py"])
 .then(()=> 
 {
     console.log("done pyme table ");
 })
 .catch(error =>{
     console.log("Error; " + error);
 });
};

我得到这个错误(是SQL错误吗?)

Error; error: syntax error at or near "'pyTable'"

但是当我尝试这种方式时,就可以了

this.createtablePy = function(){
 db.none("CREATE TABLE IF NOT EXISTS pyTable ( id_py serial NOT NULL, data jsonb")
 .then(()=> 
 {
     console.log("done pytable ");
 })
 .catch(error =>{
     console.log("Error; " + error);
 });
};

结果

done pytable

并且在数据库上创建了pytable,我在做什么错了?

为什么db.none语句不接受参数?

更新

我不知道为什么,但这可行:

this.createtablePyme = function(){
 db.any("CREATE TABLE IF NOT EXISTS $[table:name] ( $[id:name] serial NOT NULL, data jsonb)", {table: 'pytable', id: 'idPyme'})
 .then(()=> 
 {
     console.log("Creada base de datos py");
 })
 .catch(error =>{
     console.log("Error; " + error);
 });
};

并使用$ 1:name并在[]处粘贴值也可以。

1 个答案:

答案 0 :(得分:0)

根据文档,Postgres表名称必须以字母或下划线开头。