假设我有两个不同的Meteor服务器:一个托管所有业务逻辑的应用服务器(在端口3000上运行),以及一个执行后台任务的作业队列服务器(在端口6000上运行)。
我的应用程序服务器是我定义一堆集合,将SimpleSchema附加到这些集合并生成作业的地方。
作业队列服务器需要能够连接到应用程序服务器,以便它可以使用它的集合,查找要处理的作业等。我在作业队列服务器上尝试了以下内容:
console.log('one');
const Followers = new Mongo.Collection('followers', {
connection: DDP.connect('http://localhost:3000'),
});
console.log('two');
Followers.insert({
f: 'some',
t: 'crap',
});
console.log('three');
Followers
是在应用程序服务器上定义的有效集合,所以我希望在这里发生一些事情:
但事实并非如此。作业队列服务器挂起在更新命令上,无法通过它。我在控制台中看到的只有:
I20170711-06:12:40.070(-4)? one
I20170711-06:12:40.091(-4)? two
没有错误消息。我怀疑这是因为作业队列服务器没有正确连接到应用程序服务器。但是,我没有在控制台中收到任何错误消息,所以我在这一点上对于出了什么问题一无所知。
我尝试将连接字符串协议更改为http
,https
,ws
,没有协议......一切都无济于事。我在这里错过了什么?还想知道身份验证......我的应用服务器如何知道传入服务器ddp连接是否值得信任?
我能够从作业队列服务器写入MongoDB的唯一方法是完全省略连接字符串,但这会绕过我在应用程序服务器上设置的SimpleSchema,并允许我向Mongo文档提交废话(我假设使用DDP.connect指定具有附加架构的远程集合将阻止此(?))。
如果有人能帮助阐明这一点,我将不胜感激!