pg-承诺。查询在使用原始查询时有效,但在使用助手时无效
pg-promise. Query works when using raw query, but not when using helpers
当我使用以下代码时出现错误:
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.
但是,如果我使用原始查询,它会检测到 table:
var sql =
"insert into user.user_data(name, lastname)" +
"values(,)";
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 中的引号?
这样试试:
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。
当我使用以下代码时出现错误:
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.
但是,如果我使用原始查询,它会检测到 table:
var sql =
"insert into user.user_data(name, lastname)" +
"values(,)";
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 中的引号?
这样试试:
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。