NodeJS для запроса данных Postgres - PullRequest
0 голосов
/ 24 октября 2019

У меня есть данные в Postgres с 3 столбцами (id_buyer, supplier, survey_exp), и я использую узел для запроса данных в файле query.js. Затем в моем index.js я делаю

app.get('/ss/:id', db.getSSExp)

, чтобы получить ссылку на данные JSON. В этом сценарии у меня есть конкретный запрос, который должен выводить поставщиков с опросами, истекающими в течение 6 месяцев. Мой запрос не работает правильно (сервер узла выдает ошибку и «сайт не может быть достигнут»), и я считаю, что $ 1 помогает узлу определить, какой параметр я специально ищу в URL (то есть localhost: 3000 / ss / id_buyer). Любая помощь будет отличной!

const getSSExp = (request, response) => {
const id = request.params.id

pool.query('SELECT * FROM supplier_survey WHERE id_buyer = $1 and survey_exp 
<= CURRENT_DATE + INTERVAL "6 MONTH"', [id], 
(error, results) => {
    if (error) {
        throw error
    }
    response.status(200).json(results.rows)
})
}

module.exports = { getSSExp }

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Итак, выяснилось, что способ загрузки даты в БД имеет значение, и мои даты были типа 'строка', поэтому пришлось преобразовать их в дату и указать способ форматирования даты в моих столбцах. Поэтому после внесения следующих изменений в мой код это сработало ... для любого, кто столкнется с этой глупой проблемой в будущем.

"Select * FROM supplier_survey where to_date(survey_exp,'MM/DD/YYYY') > NOW() AND to_date(survey_exp,'MM/DD/YYYY') <= NOW() + '5 months' AND id_buyer = $1 Order By survey_exp"

0 голосов
/ 24 октября 2019

Без дополнительной информации о том, как результаты неверны в вашем текущем запросе, мне придется сделать некоторые предположения.

  • Должно быть: survey_exp <= </strong>

Меньше или равно начинается с символа меньше. Не уверен, что делает обратное, поскольку он, очевидно, был принят синтаксическим анализатором.

  • Синтаксис интервала MySQL не будет работать;вместо этого используйте одно из следующих:
    • CURRENT_DATE + '6 MONTH' :: интервал
    • CURRENT_DATE + INTERVAL '6 MONTH'
...