Search code examples
meteormeteor-autoformmeteor-collection2

Meteor collection not displaying


I am trying to display my Orders collection. The Orders collection schema has a select field populated from the Items collection.

I cannot seem to get the Orders collection to display on my admin's template. I have verified that I am posting to the collection with Mongol and I'm not receiving any errors in console. I have also tried displaying it in a tabular table with no luck.

Any ideas? I'm still learning meteor and have been staring at this screen for hours.. maybe need some fresh air now and a fresh look later...

/collections/orders.js

Orders = new Mongo.Collection("orders");
    Orders.attachSchema(new SimpleSchema({
      station: {
        type: String,
        label: 'Station',
        max: 2,
      },
      itemselect: {
        type: [String],
        label: 'Items',
        optional: false,
        autoform:{
          type: "select",
          options : function()  {
            return Items.find().map(function (c) {
              return {label: c.name , value: c._id}
            })
          }
        }
      }
    }));

/templates/admin.html

<template name="ordersTable">
  <div class="admin">
    <div class="panel panel-default">
      <div class="panel-heading">
       <h4 class="panel-title">
         <a data-toggle="collapse" href="#collapse2">
           <button type="button" class="btn btn-default navbar-btn">Orders</button>
         </a>
       </h4>
     </div>
     <div id="collapse2" class="panel-collapse collapse">
       <div class="panel-body">
         <ul>
           {{#each orders}}
             <li>{{> station}}</li>
           {{/each}}
         </ul>
       </div>
       <div class="panel-footer">
         {{> addOrderFormAdmin}}
       </div>
     </div>
    </div>
  </div>
</template>

/templates/admin.js < This ended up being my problem..

Template.dashboard.rendered = function() {
  return Orders.find();
};

**should be a helper.. so this instead:

Template.ordersTable.helpers({
  orders: function () {
    return Orders.find();
  }
});

Insert Order Form

<template name="addOrderFormAdmin">
  {{> autoformModals}} <!-- this is required for this modal to open -->
    {{#afModal class="btn btn-primary" collection="Orders" operation="insert"}}
      Add New Order
    {{/afModal}}
</template>

Solution

  • Your code inside your dashboard rendered callback does not make any sense. I think you want to create a helper function for your ordersTable template instead:

    Template.ordersTable.helpers({
      orders: function () {
        return Orders.find();
      }
    });
    

    Furthermore, please note that Template.myTemplate.rendered is deprecated in Meteor version 1.0.4.2 (and later), use Template.myTemplate.onRendered instead.