Meteor 流星:插入后集合为空
我是流星的新手,被绊倒了,不明白自己做错了什么。请开导我 以下是HTML文件:Meteor 流星:插入后集合为空,meteor,Meteor,我是流星的新手,被绊倒了,不明白自己做错了什么。请开导我 以下是HTML文件: <body> <h1>Do</h1> {{#if activeTask}} {{> currentTask}} {{else}} {{> newTask }} {{/if}} <div> </div> </body> <template name="newTask">
<body>
<h1>Do</h1>
{{#if activeTask}}
{{> currentTask}}
{{else}}
{{> newTask }}
{{/if}}
<div>
</div>
</body>
<template name="newTask">
<form>
<label>What<input type="text" name="what" placeholder="gimme an action"/></label>
<input type="submit" value="Go"/>
</form>
<!--
{{> inputAutocomplete settings=settings id="msg" class="input-xlarge" placeholder="action"}}
-->
</template>
<template name="currentTask">
<form>
<label>What<input type="text" name="what" placeholder="gimme an action"/>{{activeTask.what}}</label>
<div>4h 15m</div>
<input type="submit" value="Stop"/>
</form>
</template>
它成功地将一个新文档添加到数据库中,并将其记录在助手activeTask中。一步之后,它就不再记录任何任务了。它走了。但是为什么呢?如果没有安装包
autopublish
(),则需要创建发布(客户端)和订阅(服务器端):
我在最近的一篇博客文章中也解释过。一步之后是什么?我已经试过你的例子了,似乎效果不错。首先,它显示模板
newTask
——添加一个模板后,它只显示activeTask
。如果您想再次看到newTask
,您需要更改模板逻辑。这很奇怪。在我的环境中,它总是显示newTask,并在控制台中为我提供一个未定义的输出作为最后的输出。第一个输出是新创建的文档,第二个输出是未定义的。为什么他在提交表单后两次调用activeTask?您使用的是什么操作系统。您的项目文件夹中还有其他JS文件吗?请同时发布您的/.meteor/packages
文件。可能只是一个访问问题(不安全/自动发布)啊,我从一个示例localmarket创建了它。我能做的最好的事情是删除整个项目并重新开始。我假设您的代码是正确的,而您只是缺少发布/订阅(请参阅下面的答案)。
tasks = new Mongo.Collection('tasks');
if (Meteor.isClient) {
Template.body.helpers({
activeTask: function() {
var task = tasks.findOne(
{
endAt: null
},
{
sort: {
startAt: -1
}
}
);
console.log(task);
return task;
}
});
Template.newTask.events({
'submit' : function(event) {
event.preventDefault();
var now = Date.now();
var what = event.target.what.value;
tasks.insert({ what: what, startAt: now, endAt: null });
}
});
}
if (Meteor.isServer) {
Meteor.publish('tasks', function () {
return tasks.find();
});
}
if (Meteor.isClient) {
Meteor.subscribe('tasks');
}