Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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
RESTAPI Javascript如何编写检查SQL查询是否返回0行的条件_Javascript_Sql_Node.js_Postgresql_Rest - Fatal编程技术网

RESTAPI Javascript如何编写检查SQL查询是否返回0行的条件

RESTAPI Javascript如何编写检查SQL查询是否返回0行的条件,javascript,sql,node.js,postgresql,rest,Javascript,Sql,Node.js,Postgresql,Rest,我有db airport,有TABLE tourists,在它的列中有TABLE:id,还有TABLE:flights,还有列:listoftouristsbyid,它是整数数组。我需要检查是否传递给RESTAPI请求整数,该整数是不存在的游客id。表示没有具有给定id的游客(id为主键,自动递增键)。我写了这样的东西: app.post('/flights', function(req, res) { pool.connect(function(err,client,done) {

我有db airport,有TABLE tourists,在它的列中有TABLE:id,还有TABLE:flights,还有列:listoftouristsbyid,它是整数数组。我需要检查是否传递给RESTAPI请求整数,该整数是不存在的游客id。表示没有具有给定id的游客(id为主键,自动递增键)。我写了这样的东西:

app.post('/flights', function(req, res) {
    pool.connect(function(err,client,done) {
        if(err) {
            return console.log("Error fetching clients", err);
        }
        client.query("SELECT tourists.id FROM tourists WHERE tourists.id = " + req.body.listoftouristsbyid[i], function (err, result) {
            done();
            if (result.rows === 0) {
                return console.log("Tourist "+req.body.listoftouristsbyid[i]+" you want to add does not exist" + err);
            }
        })
        client.query('INSERT INTO flights(departuredate, arrivaldate, numberofseats, listoftouristsbyid, ticketprice) VALUES($1, $2, $3, $4, $5)', 
            [req.body.departuredate, req.body.arrivaldate, req.body.numberofseats, req.body.listoftouristsbyid, req.body.ticketprice]);
        done();
        res.redirect('/flights');
    })
})
我知道这是一个有效的查询,因为当我在psqlshell中键入它时,它会返回

airport=#                                                                  
SELECT tourists.id FROM tourists WHERE tourists.id = 15;
 id 
----
(0 rows)

但它不能像javascript代码那样工作——这意味着代码应该以错误终止,但条件并没有满足。如何在Javascript中编写条件,当从游客中选择游客.id时捕获,其中游客.id=15给出0行?

在MySQL中,当您执行读取操作时,它将给出数组中的值。因此,通过
result.length
检查它是否等于零

执行写入或更新操作时,结果将包含一个属性
affectedRows
,该属性将告诉您受影响的行数。
使用
console.sql('%j',result)
打印结果,并查看PostGreSQL中是否有某些选项(很可能有)。

连接的用户是否具有读取自动递增键列的权限?