2015-10-01 59 views
1

我有一个本地运行完美的Meteor应用程序,但是当我部署到meteor.com时,一种方法将无法运行。所有其他方法运行良好。方法在本地运行良好,在部署时不会运行(在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:运行聚合和upser的方法t结果到新的集合

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 valuationId,valuationSelectionsValuationResults.find({valuationId:valuationId}).fetch(),并全部返回正确的结果。

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

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

+0

从这里开始:http://stackoverflow.com/questions/26028282/how-to-monitor-meteor-com-server-side-logs – JeremyK

+0

@JeremyK,非常感谢,我能够看到使用您的错误建议,增加决议作为答案。 – Bren

回答

0

解决:

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

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

相关问题