自动从 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 命令行实用程序轻松完成此操作,但是我在通过我的节点 API 自动使用此实用程序时遇到困难。根据 this 教程,我目前的尝试如下:
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);
}
});
};
这个returns下面的错误:
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 Process documents 中的语法。我试过了:
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
]
});
它 returns 出现以下错误:
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);
}
});
};
我在 MEAN 堆栈中构建了一个用于查询和显示公司数据的应用程序。他们在内部使用 Power Query,所以我正在尝试设计一个 API 端点,将查询结果导出为 Excel 兼容格式,例如 TSV。我可以使用 mongoexport 命令行实用程序轻松完成此操作,但是我在通过我的节点 API 自动使用此实用程序时遇到困难。根据 this 教程,我目前的尝试如下:
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);
}
});
};
这个returns下面的错误:
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 Process documents 中的语法。我试过了:
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
]
});
它 returns 出现以下错误:
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);
}
});
};