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