是否可以在 "keen" 对象中添加标准属性以外的其他用户定义属性?

Is it possible to add additional user defined properties other than standard properties in "keen" object?

至于每个敏锐事件,敏锐对象会自动附加到敏锐对象的结构中。

var keen_event = {
 "keen": {
  "created_at": "2012-12-14T20:24:01.123000+00:00",
  "timestamp": "2012-12-14T20:24:01.123000+00:00",
  "id": "asd9fadifjaqw9asdfasdf939"
 },
 other properties...
}

但我想在 keen 对象中添加其他自定义属性;

 {
 "keen": {
  "created_at": "2012-12-14T20:24:01.123000+00:00",
  "timestamp": "2012-12-14T20:24:01.123000+00:00",
  "id": "asd9fadifjaqw9asdfasdf939",
  "event_type" : "some_values",
  ...
 }
}

我尝试在 keen 上添加其他属性,而不是将 keen_event 编码为:

var encodedData = base64.encode(JSON.stringify(keen_event));

然后将编码数据传递给 keen api 以创建事件,但我收到错误消息:"Invalid property for keen namespace. You used: \'event_type\'"。

有解决办法吗?在创建 keen 事件时,是否可以在“keen”对象上添加标准属性以外的自定义键值属性?提前致谢。

var data = {
 "keen": {
  "created_at": "2012-12-14T20:24:01.123000+00:00",
  "timestamp": "2012-12-14T20:24:01.123000+00:00",
  "id": "asd9fadifjaqw9asdfasdf939",
 },
 "keen1": {
  "created_at": "2012-12-14T20:24:01.123000+00:00",
  "timestamp": "2012-12-14T20:24:01.123000+00:00",
  "id": "asd9fadifjaqw9asdfasdf939",
 },
 "keen2": {
  "created_at": "2012-12-14T20:24:01.123000+00:00",
  "timestamp": "2012-12-14T20:24:01.123000+00:00",
  "id": "asd9fadifjaqw9asdfasdf939",
 }
}
var newObj = {}
Object.keys(data).map((element)=> {
  var t = {
    ...data[element],
    "event_type" : "some_values",
  }
 newObj[element] = t
 return element
})
console.log(newObj)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.14.0/react-dom.min.js"></script>

这可能有帮助

尝试这样的事情

var keenEvent = {
 "keen": {
  "created_at": "2012-12-14T20:24:01.123000+00:00",
  "timestamp": "2012-12-14T20:24:01.123000+00:00",
  "id": "asd9fadifjaqw9asdfasdf939"
 }
};

keenEvent.keen.myNewProperty = "its value";
keenEvent.keen.myNewProperty2 = "its value2";

不,这在 Keen API 中是不允许的。 keen 命名空间是保留的,在写入事件时,只能在该命名空间中指定少数属性(例如 keen.timestampkeen.addons)。保留命名空间是为了让 Keen 在将来添加新的特殊用途的属性,而不用担心与用户定义的属性发生冲突。 (另请参阅:https://keen.io/docs/api/#the-keen-object。)

也许值得退一步问:为什么要将自定义属性添加到 keen 命名空间?它能让你做哪些你用 my.keen.xkeen_custom.x 做不到的事情?

仅供参考:我是 Keen 的平台工程师 :)