Зміст
Вступ
Створімо базовий CRUD з використанням бази даних MongoDB. Для прикладу ми будемо працювати з сутністю book з такими полями:
- id - унікальний автоматично згенерований ідентифікатор
- name - назва книги
- genre - жанр
- author - автор
- deleted - поле, по котрому перевірятимемо чи книга не видалена
Підготовка
Перш за все ми повинні встановити інструменти для роботи з MongoDB. Для цього відкрийте меню в правому верхньому кутку та оберіть пункт Manage palette.
У вікні, що з'явиться, відкрийте вкладку Install та знайдіть пункт з назвою "node-red-node-mongodb", Уважно перевірте, чи ви встановлюєте правильні вузли, і натисніть на кнопку install.
Після завантаження у нас з'являться нові вузли.
Тепер під'єднаймо базу даних MongoDB до Node-red. Про те як створити базу даних MongoDB читайте тут. Винесіть вузол mongoDB на робочу область та двічі клацніть по ньому. В результаті у нас з'явиться вікно з налаштуванням вузла. Натисніть на кнопку з олівчиком, щоб створити нову конфігурацію для бази даних.
У меню Services натисніть на поле DATA SOURCE, а потім на назву вашої бази даних, щоб отримати інформацію про неї.
Цю інформацію нам потрібно внести в конфігурацію, де:
Host - Host
Port - залишаємо без змін(27017)
Database - Name
Username - User Name
Password - Password
Name - Назва конфігурації, тут можна писати яку забажаєте
Connect options - Connect options
Після заповнення натисніть кнопку Add
Тепер потрібно зберегти наші зміни за допомогою кнопки Deploy.
Якщо ми все зробили правильно, то під вузлом з'явиться зелений квадратик з надписом connected. В іншому випадку там був би червоний квадратик з надписом eror.
Тепер ми зможемо підключатись до нашої бази даних за допомогою створених нами конфігурацій, для цього просто оберіть пункт з її назвою в налаштуваннях вузла.
Post запит
Зробімо ендпоінт для створення запису про нову книгу. Для цього нам знадобляться такі вузли, як http in, function, mongodb out, http responce.
Потрібно налаштувати всі вузли. Щоб відкрити вікно з налаштуванням кожного вузла - двічі клацніть по ньому мишкою.
- http in - Оберіть метод POST та придумайте адресу по котрій можна буде звернутись до ендпоінту. Після цього натисніть Done
- Function - тут лише потрібно до даних, що прийдуть ззовні, додати нове поле deleted
msg.payload.deleted = false;
return msg;
- Mongodb out - Оберіть раніше створений сервер, додайте назву колекції та оберіть операцію insert. Також потрібно поставити галочку біля опції Only store msg.payload object. -Вузол http response залишаємо без змін, він потрібен, щоб отримати відповідь
Тепер потрібно з'єднати всі вузли, після чого наш перший ендпоїнт готовий. Збережіть зміни за допомогою кнопки Deploy.
Протестуймо наш ендпоїнт. Для цього я скористаюсь програмою postman, але можна використати і UI Editor. Для того, щоб скопіювати посилання Node-red наведіть на поле з його назвою в меню Services та натисніть на значок з аркушем.
Передаємо відповідні поля в тіло запиту і натискаємо Send. Якщо ми отримуємо статус код 200 значить все виконано успішно.
Таким самим чином я створю ще 2 записи в базі даних для того, щоб з ними працювати потім.
Get запит
Тут нам знадобляться такі вузли, як http in, function, mongodb in, http response.
-http in - оберіть метод GET і введіть адрес по якому можна буде звернутись до ендпоінту.
-function - шукаємо тільки записи, котрі не були видалені
msg.payload = {
deleted: false
}
return msg;
-mongodb in - потрібно ввести назву колекції та обрати операцію find
Зберігаємо зміни та повертаємось в postman. Метод Get повертає список всіх наших книг
Update запит
Нам знадобляться такі вузли, як http in, function, mongodb out, http response.
-http in - Обираємо метод PUT і вводимо адрес
-function - Оскільки ми будемо працювати з id об'єкту, нам знадобиться objectid. Щоб його додати, відкрийте вкладку setup, натисніть кнопку add і введіть потрібне значення. Потім поверніться у вкладку On message. Оскільки id для кожного елементу унікальний, його потрібно видалити перед оператором оновлення($set).
msg.query = {"_id": objectid(msg.payload._id)}
delete msg.payload._id
msg.payload={
$set: msg.payload
}
return msg;
-mongodb out - Введіть назву колекції та оберіть операцію update
Повертаємось у postman. Тут нам потрібно передати цілий об'єкт, який хочемо замінити, тому тіло запиту буде таке саме як при POST запиті, за виключенням поля _id яке потрібне, щоб ідентифікувати об'єкт який ми міняємо. Також виконаємо Get запит, щоб перевірити результат. Як результат, книга по id була змінена.
Delete запит
Загалом, операція видалення буде такою самою як update, за виключенням того, що ми не будемо передавати ніякі дані окрім id, та встановимо полю deleted значення true. Це означає, що ми не будемо безпосередньо видаляти запис з бази даних.
-http in - оберіть метод delete та вкажіть адрес
-function - додайте objectid так, як ми це робили раніше. В розділі On message введіть наступний код
msg.query = { "_id": objectid(msg.payload._id) }
delete msg.payload._id
msg.payload = {
$set: {"deleted" : true}
}
return msg;
-mongodb out - введіть назву колекції та оберіть операцію update
Зберігаємо зміни та перевіряємо все у postman. Тут ми передамо в тіло запиту id запису, котрий будемо видаляти. Видаляємо книгу з назвою "example". Після виконання знову викличемо Get запит для перевірки. Цієї книги більше немає в списку.
Top comments (0)