3

我正在使用 Cassandra 和 nodejs 来获取 eachRow 的大表。

我需要在每一行上插入数据,但由于某种原因,它没有等待查询,而是在完成之前完成。

client.eachRow(query, [], { prepare: true, autoPage : true, fetchSize: 500 }, function(index, row) {
     // DB query / insert or update
, function(err, result) {
    // Finish all rows.
});

有什么建议么?

4

1 回答 1

5

只需通过官方 cassandra-driver 文档https://www.npmjs.com/package/cassandra-driver并找出这一行

#stream() 方法以相同的方式工作,但它不是回调,而是在 objectMode 中返回一个 Readable Streams2 对象,该对象发出 Row 的实例。

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
  });
于 2017-11-23T18:05:09.637 回答