Node.js Cassandra nodejs在数据库查询完成之前返回
我正在用Cassandra和nodejs一起去拿大桌子 我需要在每一行上插入数据,但由于某些原因,它没有等待查询,并且在查询完成之前就已经完成了Node.js Cassandra nodejs在数据库查询完成之前返回,node.js,cassandra,datastax,datastax-enterprise,datastax-node-driver,Node.js,Cassandra,Datastax,Datastax Enterprise,Datastax Node Driver,我正在用Cassandra和nodejs一起去拿大桌子 我需要在每一行上插入数据,但由于某些原因,它没有等待查询,并且在查询完成之前就已经完成了 client.eachRow(query, [], { prepare: true, autoPage : true, fetchSize: 500 }, function(index, row) { // DB query / insert or update , function(err, result) { // Finish
client.eachRow(query, [], { prepare: true, autoPage : true, fetchSize: 500 }, function(index, row) {
// DB query / insert or update
, function(err, result) {
// Finish all rows.
});
有什么建议吗?只需通过卡桑德拉官方的驾驶员文档,找出这一行即可 #stream()方法的工作方式相同,但不是回调它 返回在objectMode中发出实例的可读Streams2对象 当然可以
谢谢,但在“可读”数据库中完成所有db查询之前,“结束”不会结束?不,您可以随时暂停或排出流。请阅读有关可读流的更多信息是的,我发现了这一点:“#stream()方法的工作方式与此相同,但它不是回调,而是以objectMode返回一个可读的Streams2对象,该对象发出行的实例。它可以通过管道输送到下游,并提供自动暂停/恢复逻辑(不读取时会缓冲)。”你能给我一个如何使用暂停/继续的示例代码吗?你能发布要点吗?我从来没有和Cassandra合作过,答案是只对流有偏见。尝试
client.stream(query, [ 'abc' ])
.on('readable', function () {
// 'readable' is emitted as soon a row is received and parsed
var row;
while (row = this.read()) {
console.log('time %s and value %s', row.time, row.val);
}
})
.on('end', function () {
// Stream ended, there aren't any more rows
})
.on('error', function (err) {
// Something went wrong: err is a response error from Cassandra
});