我有一个本地运行完美的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
,valuationSelections
和ValuationResults.find({valuationId:valuationId}).fetch()
,并全部返回正确的结果。
但是,当我部署到meteor.com时,该方法将无法运行。在我的浏览器控制台中,我看到valuationId
和valuationSelections
。但是,ValuationResults查询返回[ ]
。
我在ValuationResults中有虚拟数据,我可以在浏览器控制台中看到这样的集合。但我不明白为什么这个方法可以在本地使用,但不能部署。这是唯一不起作用的,所有其他都很好。谢谢。
从这里开始:http://stackoverflow.com/questions/26028282/how-to-monitor-meteor-com-server-side-logs – JeremyK
@JeremyK,非常感谢,我能够看到使用您的错误建议,增加决议作为答案。 – Bren