![](/img/trans.png)
[英]how to change the variable value in Javascript after every 30 seconds
[英]Infinite loop to wait for the variable value to change, and check every 30 seconds in mongo shell
编写一个连接到 mongo-shell 的 bash 脚本。 我有以下 output 用于rs.status()
。 我必须等待其中一名成员将stateStr
的值更改为Secondary
。 在下面的 output 中,您可以看到,现在它显示为Not active
。 我想编写一个无限循环,它将遍历所有成员,并每 30 秒检查一次stateStr
,直到有一个Secondary
。
"members" : [
{ "stateStr" : "Not active" },
{ "stateStr" : "PRIMARY" },
{ "stateStr" : "ARBITER" }
],
这是我到目前为止所拥有的:
mongo --host ${other_host} ${ssl_mode} <<EOF
while (true){
for (i = 0; i <= 2; i++){
if (rs.status().members[i].stateStr == "SECONDARY") {
break;
}
}
}
rs.status();
EOF
然而,这并没有打破无限循环。 我想每 30 秒检查一次。 我怎么做?
mongo --host ${other_host} ${ssl_mode} << EOF
while (rs.status().members.every(e => e.stateStr != "SECONDARY")) {
sleep(1000);
}
rs.status();
EOF
请注意,我还添加了一个sleep
,以避免忙于等待。
更新 1:如果您的 mongo 版本稍旧,那么您可能无法使用箭头功能,需要像这样拼写出来:
while (rs.status().members.every(function(e) { return e.stateStr != "SECONDARY"; })) {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.