當鍵入一個蒙戈殼未終止命令,它會返回三個點表示需要更多的投入來完成這個命令象下面這樣:如何獲得蒙戈外殼輸出(三點)對未終止命令
> db.test.find(
... {
...
我我正在使用nodejs child_process.spawn
創建一個mongo shell進程並偵聽其輸出。我可以從mongo shell獲得標準和錯誤輸出,但是我無法獲得...
輸出。下面是我的代碼的NodeJS:
const shell = spawn('mongo', params);
shell
.stdout
.on('data', (data) => {
winston.debug('get output ' + data);
});
shell
.stderr
.on('data', (data) => {
const output = data + '';
winston.error('get error output ', data);
});
我運行下面的代碼對外殼發送命令:
shell.stdin.write('db.test.find(');
我徘徊爲什麼我不能得到上述方法...
輸出。這是一個特殊的輸出嗎?
EDIT1
我試圖用node-pty
和pty.js
。他們可以獲得...
輸出,但它們將輸入和輸出數據混合在一起。它們不可能分開。 我也嘗試使用stdbuf
和unbuffer
來禁用緩衝區,但它仍然不起作用。 似乎nodejs child_process在交互式命令下不能很好地工作。
從Node.js產生'mongo' shell的目標是什麼?相反,使用[MongoDB Node.js驅動程序](https://mongodb.github.io/node-mongodb-native/)會更直截了當。 – Stennie