Node.js 里亚克JS不';不回应';钥匙';功能
我在一台新服务器(Ubuntu13.04)上重新安装了riak、node.js和riak js,当我突然使用riak js的db.keys()获取存储桶中的密钥列表时,它根本不会返回 下面是一个测试片段,显示了它是如何失败的:Node.js 里亚克JS不';不回应';钥匙';功能,node.js,riak,Node.js,Riak,我在一台新服务器(Ubuntu13.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.ge
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)
谢谢 根据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();
根据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();
谢谢——这样做更有意义,但我有一个旧版本的工作代码,按照上面描述的方式工作。我不知道它变了。再次感谢。有什么特别的事情必须在“结束”时做吗?当riak.keys终止时,我似乎将字符串“null”记录到控制台,不确定如何避免它。@matt我们需要您向我们展示一些代码,最好是在它自己的问题中。谢谢——这样做更有意义,但我在一个旧版本下使用了上述工作方式的工作代码。我不知道它变了。再次感谢。有什么特别的事情必须在“结束”时做吗?当riak.keys终止时,我似乎会将字符串“null”记录到控制台,不知道如何避免它。@matt我们需要您向我们展示一些代码,最好是在它自己的问题中