![](/img/trans.png)
[英]How do I globally install a Node.js command-line script on the server?
[英]How do I handle command-line arguments in a mongo script?
我一直在编写一些简单的脚本,以便从 bash 命令行在 mongo 上运行。 最初,我按如下方式运行它们:
$ mongo dbname script.js
但我最近遇到了 mikemaccana 的答案https://stackoverflow.com/a/23909051/2846766 ,表明使用 mongo 作为解释器,所以我可以只执行 script.js(或我选择的任何名称,带或不带 . js) 从命令行。
$ script.js
我认为它很棒而且很干净,但现在我想传入一个数据库名称作为命令行参数。
$ script.js dbname
在这里,我使用 bash 样式的“$1”来演示我在 script.js 中所做的事情。
#!/usr/bin/env mongo
var db = new Mongo().getDB($1);
// Do other things with db, once I resolve the name from the command line.
这会导致“ReferenceError: $1 is not defined ...”,这并不奇怪。 但是我将如何引用命令行参数? 这将是一个 mongo 大会吗? 一个javascript约定? 是否可以? 这将使我在 mongo 的命令行体验在美学上更好。
当前无法使用mongo shell来执行此操作...
https://groups.google.com/forum/#!topic/mongodb-user/-pO7Cec6Sjc
...如果您想获得类似的命令行体验,请尝试使用bash脚本(或其他您喜欢的脚本语言)。
简而言之, 如何将参数传递给Mongo脚本是不可能的,但是答案中给出了几种解决方法(此处不再赘述)。
您可以通过 args 传递给您的脚本
mongo --eval 'var databasePassword="password"' script.js
你可以在script.js
访问 databasePassword 值
db.auth({ user: 'testUser, pwd: databasePassword });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.