Keen.io JS API отвечает {code: UnknownError}, когда событие создано OK

Я пытаюсь создать событие Keen из облачного кода parse.com (node.js). Я использую модуль JS (https://github.com/roycef/keen-parse ), который, кажется, настроен нормально. Чтобы протестировать вещи, я настроил простой тест, и вот полный файл main.js (учетные данные удалены):

var express = require('express');
var app = express();

// Global app configuration section
app.use(express.bodyParser());

var Keen = require('cloud/keen.js');
var keen = Keen.configure({
    projectId: "xxxxxxxx",
    writeKey: "xxxxxxxx"
});

app.get('/kiss', function (req, res) {
    var resp = {};
    var respCode = 404;
    var testObj = {"firstname": "John", "surname": "Doe"};

    // send single event to Keen IO
    keen.addEvent("Testola", testObj, function (err, res) {
        if (err) {
            resp = err;
            respCode = 500;
        } else {
            resp = res.data;
            respCode = 200;
        }
    }).then(function () {
        // send something back to the app
        res.setHeader('Content-Type', 'application/json');
        res.send(resp, respCode);
    });
});

app.listen();

Когда я ПОЛУЧАЮ/целую:

  • запись хранится в соответствующей коллекции на Keen.io (ура, я вижу ее в Эксплорере!), однако
  • получен ответ (ошибка) {"code": "UnknownError"}

Итак, 2 вопроса:

  1. почему отправляется ответ об ошибке, когда событие, кажется, правильно записано на сайте leave.io?
  2. что я могу сделать, чтобы заставить вышеперечисленное работать?

person James    schedule 18.08.2015    source источник
comment
Просто выстрел в темноту здесь, но вы не используете конфигурацию с версией 1.0 или 2.0 API Keen, не так ли?   -  person BlackVegetable    schedule 31.08.2015


Ответы (2)


Похоже, что для Keen для Keen используется старый SDK, специфичный для узла. Этот SDK уже давно устарел, и я полагаю, что с тех пор в API произошли серьезные изменения.

Вместо этого вы, вероятно, захотите использовать keen-js напрямую. Его очень просто настроить, и я не думаю, что вы действительно потеряете какую-либо функциональность из-за острого разбора.

person jwegner    schedule 31.08.2015

Попробуйте keen-tracking.js. Это новый SDK, предназначенный только для отслеживания, который является полной заменой Keen-js. Вот краткая переработка вашего примера кода с новым SDK:

var express = require('express');
var app = express();

// Global app configuration section
app.use(express.bodyParser());

var Keen = require('keen-tracking');
var keen = new Keen({
    projectId: "xxxxxxxx",
    writeKey: "xxxxxxxx"
});

app.get('/kiss', function (req, res) {
    var resp = {};
    var respCode = 404;
    var testObj = {"firstname": "John", "surname": "Doe"};

    // send single event to Keen IO
    keen.recordEvent("Testola", testObj, function (err, res) {
      res.setHeader('Content-Type', 'application/json');
      if (err) {
        res.send(err, 500);
      }
      else {
        res.send(res, 200);
      }
    });
});

app.listen();
person Dustin    schedule 22.06.2016