Riak-JS不响应'键'功能

时间:2013-09-10 15:18:35

标签: node.js riak

我在新的服务器(Ubuntu 13.04)上重新安装了riak,node.js和riak-js,当我使用Riak-JS的db.keys()来获取存储桶中的密钥列表时,它突然再也没有返回。

这是一个测试代码段,展示了它是如何失败的:

var db = require('riak-js').getClient();

console.log('1');
db.save('bkt','x','1', function(err, data) {
    console.log('2');
    db.get('bkt','x', function(err, data) {
            console.log('3:'+data);
            db.keys('bkt', function(err, list) {
                    console.log('4');
                    for (key in list) { console.log('5:'+list[key]); }
            });
    });
});

这是输出:

1

2

3:1

它不会输出任何其他内容。我安装了最新的Riak(1.4.2),Node.js和Riak-JS(@latest)。

谢谢!

1 个答案:

答案 0 :(得分:4)

根据documentation db.keys()返回事件发射器,而不是将结果传递给回调。这是因为密钥列表可能很长。

在这种情况下,回调仅用于处理错误。

因此,不必传递回调,而是必须使用返回的偶数发射器:

db.keys('bkt', function(err) {                                            
        if (err) {                                                              
            //handle error                                                      
        }                                                                       
})                                                                              
    .on('keys', function(list) {                                                
        //handle the keys list                                                  
        //remember, keys may be delivered in batches                            
    })                                                                          
    .on('end', function() {                                                     
       //handle the end of keys stream                                          
    })                                                                          
    .start();