Мы собираемся написать простое приложение Node.js, которое подключается к серверу Zoomdata и извлекает данные из предварительно настроенного источника.

Если вы новичок в Zoomdata SDK, вы можете получить обзор на портале документации. Если вам нужно больше информации, есть отличный пост от Дмитрия Гладкого:



Если вы не хотите углубляться в статью, полный исходный код доступен на Github:



Давайте настроим наш проект. Нам нужно создать каталог и перейти в него:

$ mdkir zoomdata-sdk-node
$ cd zoomdata-sdk-node

Далее мы должны создать и заполнить package.json файл:

$ npm init -y

Наконец, мы должны установить zoomdata-client зависимость через

$ npm install zoomdata-client

После этого мы можем начать писать код нашего приложения, который будет жить в index.js файле:

$ touch index.js

Предполагая, что все прошло хорошо, мы можем начать с запроса пакета для Node.js в верхней части нашего скрипта:

Далее мы создаем клиента с необходимой конфигурацией приложения и учетными данными:

Обратите внимание, что мы оборачиваем все в асинхронную функцию run, потому что ожидание верхнего уровня недоступно в JavaScript.

Если все в порядке, мы можем начать запрашивать данные:

В этой части мы пытаемся получить и зарегистрировать данные из источника. Если что-то пойдет не так, ошибка будет передана на внешний catch. Вне зависимости от результата мы закроем соединение.

Вы могли заметить, что функция fetchData еще не реализована. Ну что ж, сделаем это:

Как видите, fetchData принимает в качестве параметров клиента, имя источника и конфигурацию запроса. Он подготавливает запрос и запускает его, возвращая Promise, которое может разрешиться с фактическими исходными данными.
Примечание : в настоящее время runQuery не возвращает Promise, что было бы очень удобно, поэтому нам нужно обернуть его вручную.

На этом этапе все настроено, и мы можем попробовать запустить наш скрипт:

$ node index.js

Подождите некоторое время, чтобы создать базовое соединение и отправить запрос, и вы должны увидеть что-то похожее на это:

Client ready
Query created
Running query...
Received data: [ { group: [ 'Female' ],
    current: { count: 35596, metrics: [Object] } },
  { group: [ 'Male' ],
    current: { count: 35617, metrics: [Object] } } ]