通过mongo光标迭代以列出Meteor Blaze中的所有值?

时间:2016-04-26 03:14:17

标签: javascript mongodb meteor cursor meteor-blaze

如果有人能指出我正确的方向,我会很感激!我有一个应用程序将csv上传到mongo,然后在meteor中发布。在Template.onCreated中我订阅了它并且在Template.helper中我试图遍历mongo游标以获取要在表中显示的值。

Template.table.onCreated(function() {
  Template.instance().subscribe('contacts');
});

Template.table.helpers({
  contact() {
    var contactCursor = Contacts.find();
    return contactCursor;
  }
});

我尝试过cursor.fetch()并映射但没有任何渲染或chrome崩溃。我的表看起来像这样:

    <tr>
      <td>
        {{#each contact}}
          {{contact}}
        {{/each}}
      </td>
    </tr>

我能够在表格中呈现的是

[object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object]
没什么。如果有人可以帮助我,我是meteor / blaze的新手,无法弄清楚如何迭代光标。 mongo集合看起来像这样:

{ "_id" : "Mzb6a9uh3948vw", "contact" : [ { "emailAddress" : "glen@example.com", "someContact" : "No", "creationDate" : "N/A", "bounceBack" : "N/A", "unsubscribed" : "N/A" } ] }

我想在表格中做这样的事情:

        {{#each cursor}}
          {{emailAddress}}
          {{someContact}}
          {{createdDate}}
          {{bounceBack}}
          {{unsubscribed}}
        {{/each}}

感谢

2 个答案:

答案 0 :(得分:1)

尝试:

//helper
contacts() {
    var contactCursor = Contacts.find();
    return contactCursor;
}

//html
{{#each contacts}} 
    {{#each contact}}
        <p>email: {{emailAddress}</p>
    {{/each}}
{{/each}}

另外,为什么你必须像

一样
{ "_id" : "Mzb6a9uh3948vw", 
"contact" : [ { "emailAddress" : "glen@example.com", "someContact" : "No", "creationDate" : "N/A", "bounceBack" : "N/A", "unsubscribed" : "N/A" } ] 
}

而不是:

"_id" : "Mzb6a9uh3948vw", 
"emailAddress" : "glen@example.com", 
"someContact" : "No",
//the rest

然后您可以像{{emailAddress}} //returns "glen@example.com"{{someContact}} //returns "No"

一样使用它们

修改

您可以将联系人单独插入联系人集合,并通过为每个联系人集合保存相关ID来返回这些联系人。让我们说一个用户的联系人。您在插入中保存userId然后返回如下:

Contacts.find({userId: Meteor.userId()});

您也可以从您的出版物中进行此操作,我认为在大多数情况下这样做更好。

答案 1 :(得分:0)

您的contact助手返回一个游标,其对象嵌套了一个名为contact的数组。您还必须迭代该数组:

{{#each contact}}
  id: {{_id}}
  {{#each this.contact}}
    email address: {{emailAddress}}
    some contact?: {{someContact}}
    creation date: {{creationdate}}
    bounce back: {{bounceBack}}
    unsubscribed?: {{unsubscribed}}
  {{/each}}
{{/each}}