Как отобразить строку # в Mongodb Shell - ReplicaSet config Ошибка - PullRequest
0 голосов
/ 22 мая 2019

Я тестирую набор реплик на моей локальной машине. Это только для тестирования. Я запустил свой местный экземпляр mongodb bin / mongod Затем запустили три экземпляра со следующей конфигурацией:

mongod --replSet rstest --logpath \data\rs2\2.log --dbpath \data\rs2 --port 27018 --smallfiles --oplogSize 64 

mongod --replSet rstest --logpath \data\rs3\3.log --dbpath \data\rs3 --port 27019 --smallfiles --oplogSize 64 

mongod --replSet rstest --logpath \data\rs3\3.log --dbpath \data\rs3 --port 27019 --smallfiles --oplogSize 64 

Затем я запустил mongo --port 27017 и набрал следующую конфигурацию:

config = {_id:“rstest”, members:[
{_id:0,host:“localhost:27017”},
{_id:1,host:“localhost:27018”},
{_id:2,host:“localhost:27019”}
]};

Когда я набираю приведенный выше код и нажимаю клавишу ввода, я получаю следующее сообщение об ошибке: E QUERY [js] SyntaxError: отсутствует: после id свойства @ (shell): 1: 101

E QUERY    [js] SyntaxError: missing : after property id @(shell):1:101

Я не могу понять, где мисс: Есть ли способ получить экран оболочки для отображения строки #s? Или где это 1: 101

Есть идеи, почему я получаю эту ошибку? Куда пропал: должен идти?

1 Ответ

1 голос
/ 23 мая 2019

Проблема в том, что у вас есть умные кавычки (они же вьющиеся кавычки) вокруг значений вместо обычных " символов. Если вы замените и на прямую ", то синтаксических ошибок не будет.

Я не могу понять, где промах: есть ли способ заставить экран оболочки отображать строку #s? Или где это 1: 101

В сообщении об ошибке указывается строка 1, столбец 101, но синтаксическая ошибка не особенно полезна, поскольку умные кавычки приводят в замешательство интерпретатор JavaScript.

К сожалению, нет возможности включить номера строк в оболочке mongo, поэтому вам придется использовать внешний редактор или считать строки и смещение символов в сообщении об ошибке. В идеале вам следует использовать редактор, включающий проверку синтаксиса JavaScript и нумерацию строк.

Существует несколько способов удобной работы с внешним редактором в оболочке mongo:

1) Установите переменную среды EDITOR перед запуском оболочки mongo и используйте команду edit для изменения переменной оболочки с помощью внешнего редактора.

Например:

export EDITOR=vim
mongo

> var cfg = {}
> edit cfg

Команда edit в оболочке создает временный файл eval'd в оболочке mongo при выходе из внешнего редактора. Если есть какие-либо синтаксические ошибки, ваши изменения не будут сохранены, поэтому для быстрых изменений это лучше, чем расширенное кодирование.

2) Сохраните свой JavaScript в файле с помощью внешнего редактора и используйте команду load() в оболочке mongo:

load("/path/to/myfile.js")

Этот подход более удобен для работы с большими фрагментами JavaScript, поскольку вам не нужно беспокоиться о синтаксических ошибках, препятствующих сохранению ваших изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...