【问题标题】:try..catch errors in mongo shelltry..catch mongo shell 中的错误
【发布时间】:2019-06-06 14:17:50
【问题描述】:

我正在尝试自动化 mongodb 设置并通过 mongo shell 中的 js 脚本创建用户。

我尝试创建管理员用户,我想检查用户是否已经创建。如果我在用户已经存在的情况下运行创建用户,则会引发错误。所以我想检查用户是否已经存在

#init.js
use admin
try {
db.createUser({
"user":"admin",
"pwd":"paddowrd",
"roles":[{"role":"root", "db":"admin"}]
});
}
catch (err) {
print ("Admin user already created");
db.auth("admin","paddowrd");
}




mongo < init.js

输出:[错误]

2019-06-06T14:07:58.039+0000 E QUERY [js] SyntaxError: missing catch or finally after try @(shell):2:0

【问题讨论】:

    标签: mongodb automation try-catch


    【解决方案1】:

    正确的命令是:

    mongo --host localhost:27027 init.js
    

    这里不需要重定向输入。 Mongo 命令行接受 javascript 文件名作为参数。

    另外,去掉脚本中的前两行,使用 db.getSiblingDB("admin") 切换数据库。

    //#init.js
    //use admin
    db.getSiblingDB("admin")
    try {
    db.createUser({
    "user":"admin",
    "pwd":"paddowrd",
    "roles":[{"role":"root", "db":"admin"}]
    });
    }
    catch (err) {
    print ("Admin user already created");
    db.auth("admin","paddowrd");
    }
    

    【讨论】:

    • 如果我摆脱“使用管理员”,它不会知道使用哪个数据库。
    • 如果需要,可以使用 db.getSiblingDB("admin") 切换数据库,而不是使用 admin。查看更多信息:docs.mongodb.com/manual/tutorial/…
    猜你喜欢
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多