部署应用程序时,Meteor数据库find()不返回文档

时间:2015-09-21 16:02:02

标签: node.js mongodb meteor

我有以下HTML:

<template name="something">
  {{#each biller}}
    <div>write_something</div>
  {{/each}}
</template> 

#each biller的帮助程序如下:

billers = new Mongo.Collection("billers");

Template.something.helpers({
  biller: function(param){
    return billers.find({param:param}) ;
  }
});

部署到localhost时,此功能正常。但是,当我使用subdomain.meteor.com部署到meteor deploy时,#each biller中的div显示为空 - 没有内容。然后我用billers.find()(某个数组)替换了帮助器中的return ['a','b'],它再次正常工作。所以我把问题缩小到billers.find()在部署时没有按预期工作的事实,也许它无法连接到数据库。虽然这不起作用,但在浏览器控制台中我看到以下消息:
 WebSocket connection to 'wss://ddp--3592-biller2.meteor.com/sockjs/969/mty9hj18/websocket' failed: WebSocket is closed before the connection is established. cbd6db56612e463370fc8f0b4c909d896b48d176.js:32 WebSocket connection to 'wss://ddp--5246-biller2.meteor.com/sockjs/849/wr1l0s5w/websocket' failed: WebSocket is closed before the connection is established.我不知道这个错误信息是否与我面临的问题有关。关于如何解决这个问题的任何想法?
更新
我在帮助器中添加了一行,如下面的评论所述:if(billers.find().count()==0) console.log("zero") else console.log("not zero")

在localhost上运行时,它会给出“not zero”,当在subdomain.meteor.com上运行时,它会打印“零”。所以我猜,find()正在工作,但它取出零文件。为什么会这样?

2 个答案:

答案 0 :(得分:0)

不确定为什么您的代码在localhost中工作,因为您要查找的输入应该是String或Object。这是collection.find documentation

我认为您打算像这样编写代码

Template.something.helpers({
  biller: function(param){
    return billers.find({param:param});
  }
});

答案 1 :(得分:0)

你需要&#34;素数&#34;数据库。这意味着你可以创建一个名为&#34; fixture&#34;。

的东西

因此,在您的/ server目录中创建一个名为&#34; fixtures.js&#34;的文件。在其中写道:

if (Billers.find().count() === 0)
    Billers.insert({
       "billerName":"Testing"        
    })

同时更改

  

billers = new Mongo.Collection(&#34; billers&#34;);

  

Billers = new Mongo.Collection(&#34; billers&#34;);

如果您的大写字母表示您的miniMongo查询(客户端),而您的小写字母表示您的mongo查询(服务器端)。