2015-07-11 53 views
2

进出口新的流星,我有一个问题,我无法摆脱的MongoDB集合(我用的铁路由器)流星无法获得数据

/client/routes.js

Router.route('/page', function(){ 
    this.render('page'); 
}); 

/客户机/ foo.js

city = new Mongo.Collection('data'); 

if (Meteor.isClient) { 

    Template.foo.helpers({ 
    data: function(){ 
     return city.find(); 
    } 
    }); 

} 

客户端/视图/ foo.html

<template name="foo"> 
    {{#each data}} 
     {{> all_data}} 
    {{/each}} 
</template> 
<template name="all_data"> 
    <li>{{city}}</li> 
</template> 

铬控制台命令city.find()给我:

1 ... n.Cursor {集合:LocalCollection,分拣机:空,_selectorId: 未定义,匹配:M ... o.Matcher,跳过:未定义...}

和蒙戈控制台db.data.find()它做工精细

我认为有一个问题连接到MongoDB的

+0

尝试'console.table(city.find()。取()) ;'在你的客户端代码或控制台中。 find()方法返回一个游标,findOne()或find()。fetch()返回一个文档数组。 – Billybobbonnet

+0

'city.find()。fetch()'只返回'[]'和'findOne()'返回undefined – Gintoki

+0

如果你删除了autopublish包,记住你需要定义'allow-deny'规则,出版物,以便在客户端访问您的数据。请参阅https://www.discovermeteor.com/blog/understanding-meteor-publications-and-subscriptions/。您还需要在'both'文件夹中定义您的集合,因此它指向服务器和客户端上的相同集合(如果名称匹配,则不确定这是否必需)。 – Billybobbonnet

回答

0

藏品需要在两个服务器和客户端上定义侧面自动发布到工作 - /客户端中的文件只在客户端执行,因此服务器不知道city = new Mongo.Collection('data');

文件

/client/foo.js 

移动到父目录

/foo.js 

,它也能正常工作

+0

它看起来是一个逻辑答案,但它不工作,我把它移动 – Gintoki

+0

只是测试它,除了你的模板被称为“foo”和路由器呈现“页面”,那么它对我来说非常合适。将您渲染的页面名称更改为与模板名称相同,并在开始使用/ client和/ server – Soren

+0

之前将所有文件放在顶层目录中。另外,您并不是说已经删除了任何文件的软件包,比如'insecure'或'autopublish' - 如果你有你的解决方案看起来不一样。 Ty创建一个新项目,只需添加'meteor add iron:router'并将文件移动到新项目的顶层目录,它应该都适合你。 – Soren