Dan
Dan

Reputation: 85

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>

Upvotes: 1

Views: 681

Answers (2)

Matthias A. Eckhart
Matthias A. Eckhart

Reputation: 5156

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.

Upvotes: 1

Lazov
Lazov

Reputation: 1476

Check publish and subscribe if you have removed the autopublish package. First, see if you can reach the collection through the console(on the web page, not the command line). Second, see if the collection is updated after your posts (for this you could use the command line by typing "meteor mongo" while the server is running or just download Robomongo).

Upvotes: 0

Related Questions