我意识到这是一个很老的问题,但我想我会分享我的解决方案。我有一个类似的问题,因为我有两个应用程序(App1 和 App2)将与第三个应用程序(App3)共享数据。
我无法弄清楚为什么我的 App1 的服务器端看不到 App3 中的共享集合......即使 App1 的客户端看到它们。然后我发现我的 App1 的服务器端就像 App3 的“客户端”一样,因此也需要订阅发布。
我将 DDP.connection.subscribe() 调用移到 App1 的客户端文件夹之外,以便在 App1 的客户端和服务器之间共享。然后,我使用 Meteor.setInterval() 调用来等待订阅在服务器端准备好以便使用它。这似乎奏效了。
这是一个简单的例子:
在 lib/common.js 中:
Meteor.myRemoteConnection = DDP.connect(url_to_App3);
SharedWidgets = new Meteor.Collection('widgets', Meteor.myRemoteConnection);
Meteor.sharedWidgetsSubscription = Meteor.myRemoteConnection.subscribe('allWidgets');
在服务器/fixtures.js 中:
Meteor.startup(function() {
// check once every second to see if the subscription is ready
var subIsReadyInterval = Meteor.setInterval(function () {
if ( Meteor.sharedWidgetsSubscription.ready() ) {
// SharedWidgets should be available now...
console.log('widget count:' + SharedWidgets.find().count);
// clean up the interval...
Meteor.clearInterval(subIsReadyInterval);
}
}, 1000);
});
如果有更好的方法来设置它,我很想知道。