对于每个敏锐的事件,敏锐的对象会自动附加敏锐对象的结构。
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": {
"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));
然后在敏锐的api上传递编码数据以创建一个事件,但我收到错误:"敏锐名称空间的无效属性。您使用了:\' event_type \'"。
有解决方案吗?是否可以在"上添加标准属性以外的自定义键值属性?敏锐"创造一个敏锐的事件时的对象?提前谢谢。
答案 0 :(得分:2)
不,这在Keen API中是不允许的。 keen
命名空间是保留的,只有少数几个属性(例如keen.timestamp
或keen.addons
)可以在写入事件时在该命名空间中指定。保留名称空间以允许Keen在将来添加新的特殊用途属性,而不用担心与用户定义属性的冲突。 (另见:https://keen.io/docs/api/#the-keen-object。)
也许值得退一步并问:为什么要将自定义属性添加到keen
命名空间?你可以做些什么,而不是my.keen.x
或keen_custom.x
?
仅供参考:我是Keen的平台工程师:)
答案 1 :(得分:0)
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>
这可能会有所帮助
答案 2 :(得分:0)
尝试这样的事情
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";