[英]Angular Meteor app works in localhost but fails when deployed to server
[英]Querying Meteor collection (works on the localhost, fails on server)
我刚刚在Meteor上开始了一个小项目,有几个月的经验。 我建立了一个名为Reactions的集合,并将csv数据导入到MongoDB中。
现在,当我从本地主机(win 7)查询它时,我按预期获得了记录集,但是一旦从远程服务器查询它,便得到了emty集。
由于这似乎是订阅计时问题,因为该集合大约有1万条记录,所以我在Iron Router路由中添加了“ waitOn”子句,但这没有帮助。
我在各处搜索了类似的问题,并建议使用waitOn,所以我的想法已经用完了。
请查看下面的相关代码段,并感谢您的任何提示
---------- / both / collections / Reaction.js ---------------- Reactions = new Mongo.Collection('reactions', { idGeneration : 'MONGO'} ); ---------- / server / publications.js ---------------- Meteor.publish('reactions', function() { return Reactions.find(); }); ---------- / client / views / subscriptions.js ---------------- Meteor.subscribe('reactions', function() { return Reactions.find(); }); ---------- / both / lib / router.js ---------------- this.route('reactions', { where: 'server', waitOn: function() { return Meteor.subscribe('reactions'); }, action: function () { var action = this.request.body.action; var reactions = Reactions.find( { action: action } ).fetch(); console.log( 'reactions.length = ' + reactions.length );
您的路线动作需要涉及渲染。 您的find()
可以在data:
函数内部运行。 以及为什么where:
函数? 订阅需要在客户端上运行!
this.route('reactions', {
waitOn: function() {
return Meteor.subscribe('reactions');
},
action: function () {
this.render('myLayout');
},
data: function(){
var action = this.request.body.action;
return Reactions.find( { action: action } ); // you don't need to .fetch(), just return a cursor
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.