Мы собираемся написать простое приложение 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] } } ]