Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 整数postgresql错误的输入语法无效_Node.js_Postgresql - Fatal编程技术网

Node.js 整数postgresql错误的输入语法无效

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'),

我试图从app.js文件到postgresql数据库运行删除查询,但每次都出现错误:整数的输入语法无效:“未定义” 下面是我的app.js文件代码:

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…
我非常感谢你的回复,但编辑语法对我也不起作用:(我不确定问题出在哪里:'(