如何在客户端等待,直到服务器端的mongo连接准备就绪?

时间:2012-11-22 09:12:41

标签: mongodb meteor

我的流星服务器和远程mongodb实例之间有一种缓慢的连接。在服务器未与mongo建立连接之前,我可以以某种方式在客户端等待而不注册订阅吗?

2 个答案:

答案 0 :(得分:2)

这样做的一种原始方法是使用Meteor.autorun监听Meteor.userId()中的更改。如果你能够得到这个,你会知道你已经连接到MongoDB。如果您不处理身份验证,那么您可以在服务器端创建一个从MongoDB返回内容的方法。当它返回某些内容时,在客户端成功时,您可以启动所有订阅。

答案 1 :(得分:2)

最可靠的方法是通过Meteor.call调用。如果您将此作为同步调用(无回调),则客户端将等待调用完成。以下是异步执行的方法:

  Meteor.call('isEverythingReady', param1,
    function(error, result) {
      if (error === undefined) {
        Meteor.subscribe("mystuff");
        Session.set("sess1", "whatever");
      } else {
        alert("There was an error during startup.");
      }
    });

然后

if (Meteor.isServer) {
  Meteor.methods( {
    isEverythingReady: function(param1) {
      // can you connect to database?
      return true;
    }
  }
}