我正在尝试在 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 函数中起作用。