Keen-JS: Yikes - Произошла ошибка
Я использую keen-js v.3.4.0. Я построил вокруг него угловую сервисную обертку (также, пожалуйста, не CleanKeen
был назван так через expose-loader, потому что у меня также есть Segment, который загружает их собственную версию, которая не обладает такой же функциональностью, как полная версия, и это был единственный способ, который я мог загружать бок о бок:
export class JMChartService {
constructor($timeout) {
'ngInject';
this.$timeout = $timeout;
this.initialized = false;
this.init();
}
init() {
this.$timeout(() => {
if (!this.initialized) {
if (window.CleanKeen) {
this.keen = new CleanKeen(this.config);
this.initialized = true;
} else {
this.init();
}
}
}, 500)
}
makeQuery(type, settings, callback) {
CleanKeen.ready(() => {
callback(new CleanKeen.Query(type, settings));
})
}
makeAndRenderQuery(type, querySettings, chartSettings) {
this.makeQuery(type, querySettings, (query) => {
console.log(query);
console.log(type, querySettings, chartSettings);
let chart = new CleanKeen.Dataviz()
.el(document.getElementById(chartSettings.elementId))
.chartType(chartSettings.chartType)
.prepare();
this.keen.run(query, function(err, res) {
if (err) {
// Display the API error
chart.error(err.message);
} else {
// Handle the response
chart
.parseRequest(this)
.title(chartSettings.title)
.render();
}
})
// Re-run and refresh every 15 minutes...
setInterval(() => {
query.refresh();
}, 1000 * 60 * 15);
})
}
}
Обратите внимание, что this.config
устанавливается в функции углового конфигурирования, которая получает ключи от нашего бэкэнда, проверяется на правильность и заполнение.
Значения, переданные в makeAndRenderQuery
соответственно:
тип: count
querySettings: {type: "count", event_collection: "Store Viewed", timeframe: "this_14_days", interval: "daily"}
настройки диаграммы: {title: "Store Views (past 14 days)", chartType: "columnchart", elementId: "4feb70fe-f1c1-4a74-9fbe-b2d0d0f9cff3"}
Фактический острый запрос, который возвращается в консоли:
При просмотре страницы все, что я вижу, это:
Любая помощь будет с благодарностью
1 ответ
Я скопировал твой код, и у меня все отлично работает. Не могли бы вы поделиться дополнительной информацией об ответе от API? Это 200 нормально с JSON внутри, или что-то другое?
Правильный ответ должен выглядеть так
{"result": [{"value": 123, "timeframe": {"start": "2018-04-28T07:00:00.000Z", "end": "2018-04-29T07:00:00.000Z"}}, {"value": 0, "timeframe": {"start": "2018-04-29T07:00:00.000Z", "end": "2018-04-30T07:00:00.000Z"}} ]}