REST API Javascript Как написать условие, которое проверяет, возвращает ли SQL-запрос 0 строк - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть аэропорт db, есть туристы TABLE и в нем COLUMN: id, а также у меня TABLE: полеты, и есть столбец: listoftouristsbyid, который представляет собой массив целых чисел.Мне нужно проверить, передал ли я REST API целочисленный запрос, который является идентификатором Tourist, но не EXISTS.Означает, что нет туриста с данным идентификатором (идентификатор является первичным, автоинкрементный ключ).Я написал что-то вроде этого:

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');
    })
})

Я знаю, что это допустимый запрос, потому что, когда я набираю его в оболочке PSQL, он возвращает

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

Но он не работает как код JavaScript - значиткод должен завершиться с ошибкой, но условие не выполнено.Как мне написать условие в Javascript, которое ловит, когда SELECT tourist.id ОТ туристов, ГДЕ tourist.id = 15 дает 0 строк?

1 Ответ

0 голосов
/ 27 сентября 2018

В MySQL, когда вы выполняете операцию чтения, это даст вам значение в массиве.Таким образом, получим длину массива результатов с помощью result.length, чтобы проверить, равен ли он нулю.

Когда вы выполняете операцию записи или обновления, результат будет содержать свойство affectedRows, которое сообщит вамколичество затронутых рядов.Выведите результат, используя console.sql('%j', result) и посмотрите, есть ли какая-либо опция в PostGreSQL (скорее всего, есть).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...