9

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

4

2 回答 2

2

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

于 2012-12-06T09:17:31.843 回答
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;
    }
  }
}
于 2012-12-06T11:09:57.490 回答