Sim*_*Sim 8 javascript shell stdin readline mongodb
有没有办法从Mongo shell读取一行?readline()没有定义,也没有定义system.stdin.
我需要在交互模式下执行此操作,而不是将输入提供给MongoDB shell执行的脚本.
正式地,这在 Mongo shell 中是不可能的。
非官方的说法是,是的,这是可能的。您可以使用一种小技巧来读取用户输入。
Mongo shell 在许多未记录的函数中,包含一个名为 的函数passwordPrompt,可用于读取用户输入。
只是,您必须注意此技巧有一些限制。
Enter password:到控制台,并且没有选项可以更改此提示。由于此函数是本机函数(非 js),因此无法重新定义它以删除提示。但是,如果您不介意每次希望获取用户输入时出现“输入密码:”提示,并且看不到您键入的内容,那么这应该可行。
这是一个例子。您可以在交互模式下运行它或将其写入 .js 文件中:
user_input = passwordPrompt();
print("user inputed: " + user_input);
Run Code Online (Sandbox Code Playgroud)
如果运行它并输入“hack nation”,输出将是:
Enter password:
user inputed: hack nation
Run Code Online (Sandbox Code Playgroud)
此外,Mongo shell 允许您从 shell 本身运行操作系统命令,这允许您使用非 mongo 和非 javascript 实用程序处理用户输入。例如,我为 mongo shell 创建了程序,它使用 windows powershell 和 .net 框架来制作图形用户界面并使用 gui 与用户交互,并将用户输入返回到 Mongo shell。我更喜欢这个passwordPrompt。
Mongo shell 中有很多未记录的函数,您可以使用它们来做一些更高级的事情,例如获取用户输入、文件系统 I/O 函数等。