0

我正在尝试在 lambda 函数中使用ogr2gr 模块,但我遇到了一些问题,所以我想看看是否有人尝试在 lambda 函数中使用该模块?我使用 ogr2ogr 模块的方式是通过.promise(). 但是,当我尝试运行我的 lambda 函数时,我在日志中看不到任何内容。似乎它永远不会兑现承诺?这是我的代码在 promise 下的样子:

let data = await ogr2ogr(path)
            .destination(database)
            .options(['-f "PostgreSQL"', '-nlt PROMOTE_TO_MULTI', 'nln <schemaName>."' + tableName + '"', '-overwrite']).promise();
console.log(data);

我完全按照文档所说的方式做,但它仍然不起作用。我应该指出的是我试图做

let ogr = ogr2ogr(path)
            .destination(database)
            .options(['-f "PostgreSQL"', '-nlt PROMOTE_TO_MULTI', 'nln <schemaName>."' + tableName + '"', '-overwrite']);
console.log(ogr);

我实际上在日志中看到了 EventEmitter:

EventEmitter {
  _inPath: '<path_of_file>',
  _onStderr: [Function (anonymous)],
  _driver: {},
  _args: [],
  _timeout: 15000,
  _format: 'GeoJSON',
  _skipfailures: false,
  _testClean: [Function (anonymous)],
  _destination: <database information>,
  _options: [
    '-f "PostgreSQL"',
    '-nlt PROMOTE_TO_MULTI',
    'nln useradministration.tableName',
    '-overwrite'
  ]
}

但是,如果我尝试像文档中所说的那样使用该.exec()函数进行回调,我看不到任何输出:

        let ogr = ogr2ogr(path)
            .destination(database)
            .options(['-f "PostgreSQL"', '-nlt PROMOTE_TO_MULTI', 'nln <schemaName>."' + tableName + '"', '-overwrite']);
        console.log(ogr);
        
        ogr.exec(function (er, data) {
          if (er) {
            console.error(er);
          }
          console.log(data);
        });

老实说,我在这一点上很难过,不知道该怎么做。非常感谢任何帮助,例如是否有人有类似的问题,或者解释为什么承诺或回调在 lambda 函数中起作用。

4

1 回答 1

0

事实证明,我的 lambda 超时为 3 秒,而 promise 花费的时间超过 3 秒,导致 lambda 超时,我在日志中看不到任何结果。

于 2021-03-02T18:25:36.267 回答