RESTAPI Javascript如何编写检查SQL查询是否返回0行的条件
我有db airport,有TABLE tourists,在它的列中有TABLE:id,还有TABLE:flights,还有列:listoftouristsbyid,它是整数数组。我需要检查是否传递给RESTAPI请求整数,该整数是不存在的游客id。表示没有具有给定id的游客(id为主键,自动递增键)。我写了这样的东西: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) {
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中是否有某些选项(很可能有)。连接的用户是否具有读取自动递增键列的权限?