删除自动发布和不安全:现在我无法通过MongoDB检索数据

时间:2014-09-04 13:16:45

标签: meteor

我开始学习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');

2 个答案:

答案 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({});
    }
})