Node.js 整数postgresql错误的输入语法无效
我试图从app.js文件到postgresql数据库运行删除查询,但每次都出现错误:整数的输入语法无效:“未定义” 下面是我的app.js文件代码:Node.js 整数postgresql错误的输入语法无效,node.js,postgresql,Node.js,Postgresql,我试图从app.js文件到postgresql数据库运行删除查询,但每次都出现错误:整数的输入语法无效:“未定义” 下面是我的app.js文件代码: var express = require('express'), path = require('path'), bodyParser = require('body-parser'), cons = require('consolidate'), dust = require('dustjs-helpers'),
var express = require('express'),
path = require('path'),
bodyParser = require('body-parser'),
cons = require('consolidate'),
dust = require('dustjs-helpers'),
pg = require('pg-promise'),
pgdb = require('pg'),
app = express();
//DB Connection
const config = {
user: 'Nasreen',
database: 'Inventory1',
password: 'test',
port: 5432 //Default port, change it if needed
};
const pool = new pgdb.Pool(config);
//assign dust engine
app.engine('dust', cons.dust);
//set default ext
app.set('view engine', 'dust');
app.set('views', __dirname + '/views');
//set public folder
app.use(express.static(path.join(__dirname, 'public')));
//Body parser middleware
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.get('/', function (req, res) {
pool.connect(function (err, client, done) {
if (err) {
return console.error('error', err)
}
client.query('SELECT * FROM "Products"', function (err, result) {
if (err) {
return console.error('error running query', err);
}
res.render('index', { Products: result.rows });
done();
});
});
});
app.post('/add', function (req, res) {
pool.connect(function (err, client, done) {
if (err) {
return console.error('error', err)
}
client.query('INSERT INTO "Products" ("Name", "Purchase_Qty", "Purchase_Rate") VALUES($1, $2, $3)',
[req.body.Name, req.body.Purchase_Qty, req.body.Purchase_Rate]);
done();
res.redirect('/');
});
});
app.delete('/delete/:ID', function (req, res) {
pool.connect(function (err, client, done) {
if (err) {
return console.error('error', err)
}
client.query('DELETE FROM "Products" WHERE "ID" = $1',
[req.params.ID]);
done();
res.sendStatus(200);
});
});
app.post('/edit', function (req, res) {
pool.connect(function (err, client, done) {
if (err) {
return console.error('error', err)
}
client.query('UPDATE "Products" SET "Name"= $1, "Purchase_Qty"= $2, "Purchase_Rate"= $3 WHERE "ID"= $4',
[req.body.Name, req.body.Purchase_Qty, req.body.Purchase_Rate, req.body.ID]);
done();
res.redirect('/');
});
})
对于列名和表名,INSERT可以使用双引号,但delete和edit不起作用。
有人能帮忙吗 不需要引用表名和列名。
将delete语句更改为:
“从ID为“$1”的产品中删除;
将update语句更改为:
“更新产品集名称='$1',采购数量='$2',采购率='$3',其中ID='$4';
编辑:
试试这个:
client.query(`DELETE FROM“Products”,其中“ID”=${req.params.ID}`);
这是一个用于查询的函数重载。使用模板字符串应该可以解决这个问题
而不是:
client.query('从“产品”中删除,其中“ID”=$1',[req.params.ID]);
它无法识别没有引号的表名和列名,因此请使用架构指定表名。例如SELECT…
我非常感谢你的回复,但编辑语法对我也不起作用:(我不确定问题出在哪里:'(