我的流星服务器和远程 mongodb 实例之间的连接速度很慢。我可以以某种方式在客户端等待而不注册订阅,直到服务器未建立与 mongo 的连接?
问问题
1010 次
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 回答