【问题标题】:How tp send big Data set from loopback.js remote method如何从 loopback.js 远程方法发送大数据集
【发布时间】:2018-07-31 16:59:16
【问题描述】:

我正在读取 oracle ref Cursor 并将其存储在 p_ref out 参数中并使用来自resultset.toquerystream() 方法的流我正在读取数据并将数据推送到数组变量中,一旦到达流的末尾,我将发送数据。

它适用于 1000 条记录的小型数据集,但因错误 ERR_EMPTY_RESPONSE 而失败,正如您所见,我将数据存储在数组中并在我们到达结束时返回数据

但它因“ERR_EMPTY_RESPONSE”而失败

oracledb.getConnection(
  ds.settings,
  function (err, connection) {
    if (err) {
      cb(err.message, []);
      return;
    }
    let count = 0;
    let params = {
      p_ref: {type: oracledb.CURSOR, dir: oracledb.BIND_OUT}
    };

    let cursor = null;
    let queryStream = null;
    let data = [];
    connection.execute(
      sql,
      params,
      {outFormat: oracledb.OBJECT},
      function (err, result) {
        if (err) {
          cb(err.message, []);
          doRelease(connection);
          return;
        }

        cursor = result.outBinds.p_ref;
        queryStream = cursor.toQueryStream();

        queryStream.on('data', function (row) {
          count++;
          data.push(row);
        });

        queryStream.on('error', function (err) {
          if (!cbCalled) {
            cbCalled = true;
            cb(err.message);
            doRelease(connection);
          }
        });
        queryStream.on('end', function () {
          console.log('Rows selected: ' + count);
          cb('', data);
          doRelease(connection);
        });
        queryStream.on('close', function () {
          if (!cbCalled) {
            console.log(count);

            doRelease(connection);
          }
        });
      }
    );
  }
);

参考这里https://github.com/oracle/node-oracledb/blob/master/doc/api.md

var stream = connection.queryStream('SELECT employees_name FROM employees');
stream.on('error', function (error) {   // handle any error... });
stream.on('data', function (data) {   // handle data row... });
stream.on('end', function () {   // release connection... });
stream.on('metadata', function (metadata) {   // access metadata of query });

【问题讨论】:

标签: loopbackjs strongloop


【解决方案1】:

尝试从“结束”事件中删除对 doRelease() 的调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 2020-07-17
    相关资源
    最近更新 更多