nodejs,使用helenus在Cassandra中存储数据

时间:2014-01-07 02:56:00

标签: node.js cassandra thrift helenus

我正在尝试使用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 -

1 个答案:

答案 0 :(得分:2)

对象的字符串表示形式为[Object Object],因此当您拥有嵌套对象时,toString()将返回该对象。

您应该使用JSON.stringifyJSON.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相比,它更容易使用