我开始学习Meteor.js,当我删除自动发布和不安全时,我的应用程序不再起作用了。 我可以将数据插入数据库,但我无法通过数据库检索任何内容。 控制台没有错误。 这是我的代码:
的客户机/ main.html中
<head>
<title>Blog Test</title>
</head>
<body>
<h1>Blog Test</h1>
{{>blog}}
{{>ListBlogs}}
</body>
<template name="blog">
<form class="blog-post" id="blog-post" role="form">
<label id="label-title" class="label-title">Titolo:</label>
<input id="input-title" class="input-title" placeholder="Titolo">
<br>
<label id="label-text" class="label-text">Testo:</label>
<textarea id="input-text" class="input-text" placeholder="Testo"></textarea>
<br>
<button type="submit" class="blog-btm">Submit</button>
</form>
</template>
<template name="ListBlogs">
{{#each posts}}
<h2>{{title}}</h2>
<p>{{text}}</p>
{{/each}}
</template>
的客户机/ main.js
Template.blog.events({
'submit #blog-post':function (e){
e.preventDefault();
var title = $('.input-title').val();
var text = $('.input-text').val();
Meteor.call('submitPost',title,text);
}
});
Meteor.subscribe('posts');
服务器/ server.js
Meteor.methods({
'submitPost':function(title, text){
console.log("Titolo: " + title);
console.log("Testo:" + text);
Blogs.insert({title:title, text:text});
}
});
Meteor.publish('posts', function() {
return Blogs.find();
});
LIB / blog.js
Blogs = new Meteor.Collection('blogs');
答案 0 :(得分:1)
我们在IRC中解决了这个问题我相信:-)
问题是您的模板ListBlogs
不知道posts
的含义。您必须定义一个帮助器,以便{{#each posts}}
块具有意义。
幸运的是,这只需要一个非常快速的解决方案:
Template.ListBlogs.posts = function(){
return Blogs.find().fetch();
}
将其放入client/main.js
,所有帖子都会实时显示。
答案 1 :(得分:0)
你的代码没问题,但你必须尝试订阅这种方式的收集
Tracker.autorun(function () {
Meteor.subscribe("posts");
});
http://docs.meteor.com/#tracker_autorun
之后你必须创建助手,例如......
Template.blog.helpers({
})
Template.ListBlogs.helpers({
posts: function(){
return Posts.find({});
}
})