【问题标题】:Meteor.publish/Subscribe issueMeteor.publish/Subscribe 问题
【发布时间】:2014-01-21 09:23:37
【问题描述】:

我需要使用 Meteor.publish/subscribe 向所有客户端显示数据。我在该示例中做了一个示例,我所做的是在服务器启动时插入了 10 条记录,这些10 条记录正试图向所有客户显示。问题是数据不显示客户。我不知道,因为我是 meteor JS 的新手。所以请看下面代码并建议我怎么做?

HTML 代码:

<head>
  <title>DataApp</title>
</head>

<body>
  {{> main}}
</body>

<template name="main">

         {{#each messages}}      
              {{messages}}
        {{/each}}
</template>

和JS代码是:

Messages = new Meteor.Collection("messages");
if (Meteor.isClient) 
{
 Meteor.subscribe('messages');

}

if (Meteor.isServer) 
{
  Meteor.startup(function ()
  {
    // code to run on server at startup
    for(var i = 0 ; i <= 10 ; i++ )
    {
      console.log("EXE"+i);
      Messages.insert({ name: "EXE"+i });
     }

  });


     Meteor.publish('messages', function() {

           return  Messages.find();
        });
}

【问题讨论】:

    标签: javascript meteor publish-subscribe


    【解决方案1】:

    首先,您的模板main 缺少模板助手,因此请让您的Meteor.isClient 看起来像这样:

    if (Meteor.isClient) {
      Meteor.subscribe('messages');
    
      // this is the template helper that is referenced by {{messages}} 
      // in your template 'main' 
      Template.main.messages = function () {
        return Messages.find();
      };
    }
    

    其次,你的 html 中的把手没有意义,试试这个:

    <template name="main">
        <!-- inserts value of property 'name' of each object in 'messages'  -->
        {{#each messages}}      
            {{name}}
        {{/each}}
    </template>
    

    【讨论】:

    • 我提出了一个疑问,即“一条记录包含姓名和电子邮件”所以如何使用发布/订阅向所有客户显示所有记录。你能给我建议吗?@Tobold
    • 我不确定我是否理解你的问题。您是说每条消息也有一个属性Email 并且您也想显示它?
    • 对不起,我的问题是“一个集合对象包含许多记录,每个记录包含 5 个字段。所以可以使用发布/订阅显示带有一个对象的记录数据吗?@Tobold
    • 抱歉,还不清楚。发布多少字段并不重要,您可以按照我的回答所展示的相同方式访问所有字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多