Node.js 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

我正在用Cassandra和nodejs一起去拿大桌子

我需要在每一行上插入数据,但由于某些原因,它没有等待查询,并且在查询完成之前就已经完成了

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
  });