Инструменты кода
Примеры кода
Содержание:
- Интеграция с Mongo DB Atlas
- JS узел. Параллельные HTTP-запросы
- Обработка и преобразование данных из предыдущего узла
1. Интеграция с Mongo DB Atlas
import { MongoClient } from 'mongodb';
export default async function run({execution_id, input, data}) {
// Строка подключения MongoDB
// Структура:
// mongodb+srv://USERNAME:PASSWORD@CLUSTER_ADDRESS/DATABASE
// USERNAME: Имя пользователя для аутентификации
// PASSWORD: Пароль для аутентификации
// CLUSTER_ADDRESS: Адрес вашего кластера MongoDB
// DATABASE: База данных по умолчанию (опционально)
const connectionString = 'mongodb+srv://USERNAME:PASSWORD@CLUSTER_ADDRESS/DATABASE';
// Подключение к клиенту MongoDB
const client = await MongoClient.connect(
connectionString,
{ useNewUrlParser: true, useUnifiedTopology: true } // Опции подключения
);
// Выбор базы данных 'parsing-m' и коллекции 'apps'
const coll = client.db('parsing-m').collection('apps');
// Поиск последних 3 записей, где processed не равно true
const filter = {processed:{$ne: true}};
// Сортировка по полю "sort" в порядке убывания (замените "sort" на фактическое имя поля)
const cursor = coll.find(filter).sort({"sort": -1}).limit(3);
// Преобразование курсора в массив для получения результата
const result = await cursor.toArray();
// Закрытие соединения с клиентом MongoDB
await client.close();
return result;
}2. JS узел. Параллельные HTTP-запросы
Вы можете выполнять параллельные HTTP-запросы с помощью узла JavaScript.
/*
* Этот код структурирован для обработки нескольких HTTP GET-запросов одновременно,
* используя axios для выполнения запросов и Promise.all для их параллельного управления.
*/
// Импорт библиотеки axios для HTTP-запросов
import axios from "axios";
export default async function run({ execution_id, input, data }) {
// Определение массива URL для HTTP-запросов
const urls = ['https://dummyjson.com/carts', 'https://dummyjson.com/users', 'https://dummyjson.com/quotes'];
try {
// Использование Promise.all для одновременных HTTP-запросов к указанным URL
// Функция map применяет 'httpRequest' к каждому URL в массиве 'urls'
const results = await Promise.all(urls.map(url => httpRequest(url)));
// Возврат результатов HTTP-запросов
return {
res: results
};
} catch (error) {
// Логирование ошибок в консоль
console.error(error);
// Повторный выброс ошибки для обработки вызывающей функцией
throw error;
}
// Определение асинхронной функции 'httpRequest' для обработки отдельных HTTP-запросов
async function httpRequest(rawURL) {
try {
// Выполнение GET-запроса к указанному URL с помощью axios
const response = await axios({
method: "GET",
url: rawURL
});
// Возврат данных из ответа
return response.data;
} catch (error) {
// Логирование ошибок HTTP-запроса
console.error(error);
// Повторный выброс ошибки для обработки вызывающей функцией
throw error;
}
}
}3. Обработка и преобразование данных из предыдущего узла
export default async function run({execution_id, input, data}) {
// const - синтаксис для создания константы
// SurName - имя константы
// data["{{1.body.Surname}}"] - значение константы. Выражение добавляется автоматически при клике на "SurName" в окне Data.
const SurName = data["{{1.body.Surname}}"];
const Name = data["{{1.body.Name}}"];
const FullName = Name +' '+ SurName;
const Email = data["{{1.body.Email}}"];
const LastAction = data["{{1.body.LastAction}}"];
const message = `Привет, ${FullName}! В последний раз вы посещали Nodul ${LastAction}.`;
// Сборка JSON
const resultRawJSON = JSON.stringify({
"from_email": "[email protected]",
"to": Email,
"subject": "Nodul",
"text": message,
});
// Возврат значений
return {
resultRawJSON
}
}