我正在尝试使用helenus模块实现将数据存储到cassandra的接口。 使用thrift驱动程序,我正在插入并获取数据。
keySpace.get(cfName, function (err, cf) {
cf.insert(key, storData, {consistency :
helenus.ConsistencyLevel.ANY}, function(err) {
}
现在我得到的数据如下:
keySpace.get(cfName, function (err, cf) {
cf.get(key, function(err, row) {
row.forEach(function(name,value,ts,ttl){
console.log("Getting NAME AS:", name.toString(),
value.toString());
});
});
但我观察到的是,如果存储的数据是JSON级别1,那么我能够正确检索数据,例如:
{"a":"b", "c":"d"}
这个我可以使用上面的get操作检索,但是如果它是多级的,那么我将数据作为[Object Object], 示例JSON:
{"c": [{"a":"b"}]}
这对我不起作用。 请让我知道我在哪里做错了。
此致 -M -
答案 0 :(得分:2)
对象的字符串表示形式为[Object Object]
,因此当您拥有嵌套对象时,toString()
将返回该对象。
您应该使用JSON.stringify
和JSON.parse
,如果名称从未嵌套,则可以
keySpace.get(cfName, function (err, cf) {
cf.get(key, function(err, row) {
row.forEach(function(name,value,ts,ttl){
console.log("Getting NAME AS:", name.toString(), JSON.stringify(value));
});
});
基本上存储JSON的正确方法是首先对它进行字符串化,然后当你收回它时,你会解析它。
作为旁注,为什么你不使用CQL,与thrift相比,它更容易使用