UBOS Community

Olha
Olha

Posted on • Updated on

Робота з PostgreSQL

Спершу потрібно встановити пакет в середовищі NodeRed. Для цього в меню обираємо "Manage Palette". Далі обираємо "install", в пошуку пишемо назву потрібного нам пакету "node-red-contrib-re-postgres" та встановлюємо його.
Image description

Image description

Після цього у нас з'явиться вузол з назвою postgres.

Image description

Переміщуємо вузол postgres на робочий простір, двічі натискаємо на вузол та редагуємо його.

У вузлі postgres потрібно внести інформацію про базу даних, яку ми створювали. Про створення бази даних PostgreSQL читайте тут.

Image description

Host- Host
Port- залишаємо без змін
Database- Name
Username- User Name
Password- Password
Name - назва конфігурації, тут можна писати будь-яку.

Після заповнення натисніть кнопку Add.

Обираємо ім'я нашої конфігурації ( Name з попереднього скріна ). Обираємо Receive query output та можемо заповнити поле Name- ім'я , під який буде відображено вузол на робочій поверхні.

Image description

Натискаємо Deploy, щоб зберегти налаштування вузла.

Image description

Створення таблиці.

Для цього потрібно 5 вузлів:

  • іnject
  • function
  • postgres
  • http response
  • debug

Image description

В функції вказуємо назву таблиці, поля та тип даних.
На прикладі створена таблиця people, яка має 4 поля з такими назвами: user_id, name, age та country. Де:

user_id - первинний ключ з типом INTEGER,
name - ім'я людини з типом TEXT,
age - вік з типом INTEGER
country - країна з типом TEXT.

Image description

msg.payload = `CREATE TABLE users(
    user_id serial PRIMARY KEY,
    name  TEXT,
    age INTEGER,
    country TEXT
)`

return msg;
Enter fullscreen mode Exit fullscreen mode

Для того, щоб зрозуміти результат виконання операції, у вузлі debugобираємо complete msg object

Image description

Натискаємо Deployі після цього натискаємо на Inject.

Image description

Дивимося результат виконання , який покаже debug.

Image description

POST запит.

Для того, щоб додати дані у таблицю, потрібно створити ендпоінт. Використовуємо такі вузли:

  • http in
  • function
  • postgres
  • http response
  • debug

У вузлі http in обираємо метод POST та придумаємо адресу по якій можна буде звернутись до ендпоінту з UI сервісу. Як це зробити читайте тут.

Image description

У вузлі функції вказуємо, у яку таблицю робимо запис, перераховуємо поля та відповідні значення. Послідовність полів та їх значень важлива!

Image description

msg.payload = `INSERT INTO users(name, age, country)
VALUES (
 '${msg.payload.name}',
 '${msg.payload.age}', 
 '${msg.payload.counrty}')
 returning *
`
return msg;
Enter fullscreen mode Exit fullscreen mode

Результат виконання , який показує debug:

Image description

Get запит.
Для того, щоб отримати дані з створеної таблиці потрібно 5 вузлів:

  • http in
  • function
  • postgres
  • http response
  • debug

У вузлі http in обираємо метод GET.

Image description

У вузлі функції вказуємо, які дані ми хочемо повертути. Щоб повернути всі значення - SELECT *, щоб повернути значення певних полів - SELECT FIELD_NAME1, FIELD_NAME2 . На першому прикладі повернуться всі дані, на другому тільки значення user_id, name та country.

Приклад 1
Image description

`SELECT * FROM users `
Enter fullscreen mode Exit fullscreen mode

Результат:

Image description

Приклад 2
Image description

`SELECT user_id, name, country FROM users `
Enter fullscreen mode Exit fullscreen mode

Результат виконання:

Image description

PUT запит.
Для того, щоб змінити дані у створеній таблиці потрібно 5 вузлів: - http in

  • function
  • postgres
  • http response
  • debug У вузлі http in обираємо метод PUT.

Image description

У вузлі функції вказуємо назву таблиці, які поля потрібно оновити, нові значення та де саме потрібно зробити оновлення. На прикладі у таблиці people оновлюємо поля name, age та country. Об'єкт, який потрібно оновити, вказуємо по user_id.

Image description


msg.payload = `UPDATE users
SET name = '${msg.payload.name}',
age = '${msg.payload.age}',
country = '${msg.payload.country}'
WHERE user_id = ${msg.payload.user_id};
returning *`
return msg;

Enter fullscreen mode Exit fullscreen mode

Результат виконання:

Image description

DELETE запит.
Для того, щоб видалити дані у створеній таблиці потрібно 5 вузлів:

  • http in
  • function
  • postgres
  • http response
  • debug У вузлі http in обираємо метод DELETE.

Image description

У вузлі функції вказуємо назву таблиці та параметр, по якому потрібно обрати об'єкт для видалення. На прикладі у таблиці people видаляємо об'єкт по значенню user_id.

Image description

msg.payload = `DELETE FROM users
WHERE user_id = ${msg.payload.user_id}
RETURNING *;`
return msg;
Enter fullscreen mode Exit fullscreen mode

Результат виконання:

Image description

Discussion (0)