我有以下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()
正在工作,但它取出零文件。为什么会这样?
答案 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查询(服务器端)。