Когда Введите незавершенную команду в Монго оболочке, он будет возвращать три точки, указывающей нужно больше, входа для завершения этой команды, как показано ниже:Как получить выход Монго оболочки (три точки) для несогласованной команды
> db.test.find(
... {
...
I я использую nodejs child_process.spawn
для создания процесса оболочки mongo и прослушивания его вывода. Я могу получить стандартный и вывод ошибок из оболочки mongo, но я не могу получить вывод ...
. Ниже мой 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 не работает с интерактивной командой.
Какова ваша цель, поскольку нерестится оболочка 'mongo' от Node.js? Было бы гораздо проще использовать драйвер [MongoDB Node.js] (https://mongodb.github.io/node-mongodb-native/). – Stennie