繁体   English   中英

自动将Node.js API导出为TSV或其他excel兼容格式

[英]Automating exports from a Node.js API to TSV or other excel compatible format

我在MEAN堆栈中构建了一个用于查询和显示公司数据的应用程序。 他们在内部使用Power Query,所以我试图设计一个API端点,该端点将查询结果导出为Excel兼容格式,例如TSV。 我可以使用mongoexport命令行实用程序轻松完成此操作,但是我很难通过Node API自动使用此实用程序。 根据教程,我目前的尝试如下:

var child = require('child-process');
var exec = child.exec();

 module.exports.tsvData = function (query) {
    //Atempted child process manipulation to use mongoexport CLI utility in this endpoint.
    var command = 'echo "ANDY"'

    child = exec(command, function (error, stdout, stderr) {
      sys.print('stdout: ' + stdout);
      sys.print('stderr: ' + stderr);
      if (error !== null) {
        console.log('exec error: ' + error);
      }
    });
  };

这将返回以下错误:

TypeError: object is not a function
at module.exports.tsvData (C:\Users\awimley\pstat\app_api\controllers\main.js:367:13)
at callbacks (C:\Users\awimley\pstat\node_modules\express\lib\router\index.js:164:37)
at param (C:\Users\awimley\pstat\node_modules\express\lib\router\index.js:138:11)
at pass (C:\Users\awimley\pstat\node_modules\express\lib\router\index.js:145:5)
at Router._dispatch (C:\Users\awimley\pstat\node_modules\express\lib\router\index.js:173:5)

这在child =行上。 我怀疑这是因为教程已过时,所以我尝试使用子流程文档中的语法。 我试过了:

child = child_process.spawn('ls', {
    stdio: [
      0, // use parents stdin for child
      'pipe', // pipe child's stdout to parent
      fs.openSync('err.out', 'w') // direct child's stderr to a file
    ]
});

并且它返回以下错误:

    events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: spawn ENOENT
    at errnoException (child_process.js:1011:11)
    at Process.ChildProcess._handle.onexit (child_process.js:802:34)
19 Oct 09:18:44 - [nodemon] app crashed - waiting for file changes before starting...

从Node.js API触发命令行实用程序方面的任何帮助都是很棒的。

我认为发生了名称冲突,请尝试以下操作:

var child_process = require('child_process');
module.exports.tsvData = function(query) {
  var command = 'echo ANDY';
  var child = child_process.exec(command, function (error, stdout, stderr) {
    console.log('stdout: ' + stdout);
    console.log('stderr: ' + stderr);
    if (error !== null) {
      console.log('exec error: ' + error);
    }
  });
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM