如何在 Mongodb Shell 中显示行 #- ReplicaSet 配置错误
How to display line # in Mongodb Shell- ReplicaSet config Error
我正在我的本地机器上测试一个副本集。它仅用于测试。
我启动了本地 mongodb 实例 bin/mongod
然后启动三个实例,配置如下:
mongod --replSet rstest --logpath \data\rs2.log --dbpath \data\rs2 --port 27018 --smallfiles --oplogSize 64
mongod --replSet rstest --logpath \data\rs3.log --dbpath \data\rs3 --port 27019 --smallfiles --oplogSize 64
mongod --replSet rstest --logpath \data\rs3.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: missing : 在 属性 id @(shell):1:101
之后
E QUERY [js] SyntaxError: missing : after property id @(shell):1:101
我无法弄清楚小姐在哪里:
有没有办法让 shell 屏幕显示第 #s 行?或者 1:101
在哪里
知道我为什么会收到此错误吗?哪里不见了:应该去哪里?
问题是您在值周围有 smart quotes(又名弯引号)而不是正常的 "
字符。如果将 “
和 ”
替换为直接 "
则没有语法错误。
I'm unable to figure out where is the miss : Is there a way to get the shell screen to display line #s? Or where is that 1:101
错误消息指示第 1 行,第 101 列,但语法错误不是特别有用,因为智能引号混淆了 JavaScript 解释器。
不幸的是,mongo
shell 中没有打开行号的选项,因此您必须使用外部编辑器或计算错误消息中的行数和字符偏移量.理想情况下,您应该使用包含 JavaScript 语法检查和行编号的编辑器。
在 mongo
shell:
中有几种方便地使用外部编辑器的方法
1) 在启动 mongo
shell 之前设置 EDITOR
环境变量,并使用 edit
command 使用外部编辑器修改 shell 变量。
例如:
export EDITOR=vim
mongo
> var cfg = {}
> edit cfg
当您退出外部编辑器时,shell 中的 edit
命令会创建一个临时文件,即 mongo
shell 中的 eval'd
。如果有任何语法错误,您的更改将不会被保存,因此这比扩展编码更适合快速更改。
2) 使用外部编辑器将 JavaScript 保存在一个文件中,并在 mongo
shell:
中使用 load()
command
load("/path/to/myfile.js")
这种方法更便于处理 JavaScript 的较大片段,因为您不必担心语法错误会阻止您的更改被保存。
我正在我的本地机器上测试一个副本集。它仅用于测试。 我启动了本地 mongodb 实例 bin/mongod 然后启动三个实例,配置如下:
mongod --replSet rstest --logpath \data\rs2.log --dbpath \data\rs2 --port 27018 --smallfiles --oplogSize 64
mongod --replSet rstest --logpath \data\rs3.log --dbpath \data\rs3 --port 27019 --smallfiles --oplogSize 64
mongod --replSet rstest --logpath \data\rs3.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: missing : 在 属性 id @(shell):1:101
之后E QUERY [js] SyntaxError: missing : after property id @(shell):1:101
我无法弄清楚小姐在哪里: 有没有办法让 shell 屏幕显示第 #s 行?或者 1:101
在哪里知道我为什么会收到此错误吗?哪里不见了:应该去哪里?
问题是您在值周围有 smart quotes(又名弯引号)而不是正常的 "
字符。如果将 “
和 ”
替换为直接 "
则没有语法错误。
I'm unable to figure out where is the miss : Is there a way to get the shell screen to display line #s? Or where is that 1:101
错误消息指示第 1 行,第 101 列,但语法错误不是特别有用,因为智能引号混淆了 JavaScript 解释器。
不幸的是,mongo
shell 中没有打开行号的选项,因此您必须使用外部编辑器或计算错误消息中的行数和字符偏移量.理想情况下,您应该使用包含 JavaScript 语法检查和行编号的编辑器。
在 mongo
shell:
1) 在启动 mongo
shell 之前设置 EDITOR
环境变量,并使用 edit
command 使用外部编辑器修改 shell 变量。
例如:
export EDITOR=vim
mongo
> var cfg = {}
> edit cfg
当您退出外部编辑器时,shell 中的 edit
命令会创建一个临时文件,即 mongo
shell 中的 eval'd
。如果有任何语法错误,您的更改将不会被保存,因此这比扩展编码更适合快速更改。
2) 使用外部编辑器将 JavaScript 保存在一个文件中,并在 mongo
shell:
load()
command
load("/path/to/myfile.js")
这种方法更便于处理 JavaScript 的较大片段,因为您不必担心语法错误会阻止您的更改被保存。