【发布时间】:2021-05-31 07:01:14
【问题描述】:
我正在尝试在 lambda 函数中使用 ogr2gr module,但我遇到了一些问题,所以我想看看是否有人尝试在 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 函数中起作用。
【问题讨论】:
标签: aws-lambda promise ogr ogr2ogr