0

我在端口 8001 上有一个 UI 应用程序,在端口 7001 上有一个名为 contract 的应用程序。我已经安装并运行了“集群”。我在“合同”应用程序中定义了一个订阅和插入方法。

“合同”服务器/app.js

Cluster.connect("mongodb://<username>:<passwd>@URL");
var options = {
    endpoint: "http://localhost:7001",
    balancer: "http://localhost:7001", // optional
    uiService: "web" // (optional) read to the end for more info
};
Cluster.register("contracts", options);

var Contracts = new Meteor.Collection('contracts');

Meteor.methods({
    addContract: addContract,
    findContracts: findContracts
});

Meteor.publish("getContracts", function () {
    return Contracts.find({});
});

function addContract(c){
    var data = {
        id: c.id,
        type: c.type
    };
    Contracts.insert(data);
}

function findContracts(){
    var contracts = Contracts.find().fetch();
    return contracts;
}

我正在从我的 UI 应用程序中的角度控制器访问这些方法。

UI 应用服务器/app.js
Cluster.connect(mongodb://<username>:<passwd>@URL");
var options = {
    endpoint: "http://localhost:8001",
    balancer: "http://localhost:8001" // optional
    //uiService: "web" // (optional) read to the end for more info
};
Cluster.register("web", options);
Cluster.allowPublicAccess("contracts");
UI 应用控制器代码
var contractConn = Cluster.discoverConnection('contracts');
            contractConn.subscribe('getContracts');
            var SubscribedContracts = new Mongo.Collection('SubscribedContracts', {connection: contractConn});
            console.log('status', contractConn.status());
            vm.contracts = SubscribedContracts.find({}).count();
            contractConn.call("findContracts", function(err, result) {
                if(err) {
                    throw err ;
                }
                else {
                    console.log(result);
                }
            });

这就是正在发生的事情: * 我可以访问合同服务器上的方法 * 我可以使用这些方法插入或查找合同 * 我的订阅不起作用。游标上的 fetch 显示 0 并且 count 显示 0 * 连接上的状态显示“正在连接”

我的订阅做错了什么?

苏迪

4

1 回答 1

0

我不得不将客户端 mongo 集合的名称更改为与服务上的集合名称相同的名称。

于 2015-12-15T15:56:34.720 回答