方法在本地运行正常,部署时不会运行(在meteor.com上)

时间:2015-10-01 04:09:49

标签: javascript meteor web-deployment

我有一个在本地运行完美的Meteor应用程序,但是当我部署到meteor.com时,一个方法将无法运行。所有其他方法都运行良好。

这是相关代码:

客户端:按钮单击以将公司添加到阵列

Template.ValuationTableComps.events ({
    'submit form': function(e) {
        e.preventDefault();
        var valuationId = this._id;
        var selection = {
        valuationSelections: $(e.target).find('[name=selectionComp]').val()};
        Valuations.update(valuationId, {$addToSet: selection}, function () {});
    }
});

客户端:按钮单击以根据上面的选择重新运行阵列

Template.ValuationCalc.events({
    'click #agg': function(e) {
        e.preventDefault();
        var valuationId = this._id;
        var valuationSelections = this.valuationSelections;
        Meteor.call('valuationAggregate', valuationId, valuationSelections, function (error, result) {});
    }
});

Lib:运行聚合并将结果升级到新集合的方法

Meteor.methods({
    valuationAggregate: function(valuationId, valuationSelections) {
        if (Meteor.isServer) {
            check(valuationId, String);
            check(valuationSelections, Array);
            var pipelineSelections = [
            //build pipeline//
            ];
            var results = Companies.aggregate(pipelineSelections);
            results.forEach(function(valuationResults) {
                ValuationResults.update({valuationId: valuationId}, valuationResults, {upsert: true});
            });
        }
    }});

在本地运行时,一切正常。我可以在客户端和服务器上安装console.log valuationIdvaluationSelectionsValuationResults.find({valuationId:valuationId}).fetch(),并且都返回正确的结果。

但是,当我部署到meteor.com时,该方法将无法运行。在我的浏览器控制台中,我看到valuationIdvaluationSelections。但是,ValuationResults查询返回[ ]

我在ValuationResults中有虚拟数据,我可以在浏览器控制台中看到,因此集合很好。但我不明白为什么该方法可以在本地工作但不在部署。这是唯一不起作用的东西,其他一切都很好。谢谢。

1 个答案:

答案 0 :(得分:0)

解决:

我能够运行meteor logs myApp并看到错误MongoError: exception: invalid operator '$literal'。我的$project阶段包含valuationId: {$literal: valuationId},以便为新文档添加新字段。我不知道为什么会出现错误,但似乎有一个已知的mongodb问题:https://jira.mongodb.org/browse/RUBY-668

我从我的管道中取出了$literal,而只更新了现有的估价文件。现在在本地和部署时工作正常。