繁体   English   中英

查询流星集合(在本地主机上运行,​​在服务器上失败)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM