try..catch ошибки в оболочке монго - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь автоматизировать настройку mongodb и создать пользователей с помощью js-скрипта в оболочке mongo.

Я попытался создать пользователя с правами администратора, и я хочу проверить, создан ли пользователь уже. Если я запускаю команду create user, если пользователь уже существует, выдается ошибка. Так что я хочу проверить, если пользователь уже там

#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: отсутствует catch или, наконец, после try @ (shell): 2: 0

1 Ответ

0 голосов
/ 06 июня 2019

правильная команда будет:

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");
}
...