我在一个新服务器(Ubuntu13.04)上重新安装了riak、node.js和riak-js,当我使用Riak的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 (@ latest )。
谢谢!
发布于 2013-09-11 17:43:53
根据文档,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();https://stackoverflow.com/questions/18722796
复制相似问题