当事件创建好时,Keen.io JS api响应{“code”:“UnknownError”}

时间:2015-08-18 09:49:14

标签: javascript json node.js keen-io

我正在尝试从parse.com云代码(node.js)创建一个Keen事件。我正在使用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的相关集合中(是的 - 我可以在Expolorer中看到它!)然而
  • 收到的回复(错误)是{“code”:“UnknownError”}

所以,2个问题:

  1. 为什么在keen.io上正确记录事件时发送错误响应?
  2. 我能做些什么来完成上述工作?

2 个答案:

答案 0 :(得分:1)

看起来keen-parse正在为Keen使用旧的特定于节点的SDK。该SDK在很久以前就被弃用了,我相信自那时起API已经发生了一些重大变化。

您可能希望直接使用keen-js。设置起来非常简单,我认为你真的不会因为敏锐的解析而失去任何功能。

答案 1 :(得分:1)

尝试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();