Nodul LogoNodul
Инструменты кода

Примеры кода

Содержание:

  1. Интеграция с Mongo DB Atlas
  2. JS узел. Параллельные HTTP-запросы
  3. Обработка и преобразование данных из предыдущего узла

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
    }
}