使用以下代码时出现错误:
var rows = [{"alex", "matos"},{"john","carmack"}]
const cs = pg.pgp.helpers.ColumnSet(
["name","lastname"],
{ table: "user.user_data" }
);
const query = pg.pgp.helpers.insert(rows, cs);
pg.db
.none(query)
.then(data => {
console.log("success");
res.status(200).send("OK");
})
.catch(err => {
res.status(400).send("error");
});
error: relation "user.user_data" does not exist.
但是,如果我使用原始查询,它会检测到表:
var sql =
"insert into user.user_data(name, lastname)" +
"values($1,$2)";
var values = [{"alex", "matos"},{"john","carmack"}];
pg.db
.none(sql, values)
.then(data => {})
.catch(err => {
console.log(err);
res.status(400).send("Error");
});
这是我的配置文件,我从以下位置获取pg和db变量:
const options = {
promiseLib: promise,
capSQL: true
};
//Postgres Connection
var pgp = require("pg-promise")(options);
var connectionString = `pg://${config.db.user}:${config.db.pass}@${
config.db.url
}/${config.db.dbname}`;
var db = pgp(connectionString);
db.connect()
.then(function(obj) {
obj.done();
console.log("connected");
})
.catch(err => {
throw err;
});
monitor.attach(options);
module.exports = {
pgp: pgp,
db: db
};
如何解决此问题?我想使用第一个代码,因为它更快。
谢谢
编辑:日志
INSERT INTO "user.user_data"("name","lastname") VALUES("alex", "matos")
如何删除user.user_data中的引号?
答案 0 :(得分:2)
像这样尝试:
const cs = pg.pgp.helpers.ColumnSet(
['name', 'lastname'], { table: { table: 'user_data', schema: 'user' } }
);
或者您可以尝试这样:
const table = new pgp.helpers.TableName('user_data', 'user');
const cs = pg.pgp.helpers.ColumnSet(
['name', 'lastname'], { table }
);
更多信息here。