2015-10-01 58 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從我的管道中取出,而只是更新了現有評估文檔。現在可以在本地和部署時正常工作。

相關問題