0

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

4

1 回答 1

2

对象的字符串表示形式是[Object Object],因此当您有嵌套对象时,这就是toString()将返回的内容。

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

于 2014-01-07T03:09:51.577 回答