Search code examples
mongodbmeteorspacebarsmeteor-helper

Why is my select not being populated with this Meteor code?


I've got the following code to try to populate a select:

In \lib\mongo.js:

JobLocations = new Mongo.Collection("jobLocations");

In \server\scheduler.js:

Meteor.startup(function () {
    // code to run on server at startup
    if (JobLocations.find().count() == 0) {
      console.log('JobLocations collection empty; inserting');

      JobLocations.insert({ value: "1", display: "Uno" });
      JobLocations.insert({ value: "2", display: "Dos" });
      JobLocations.insert({ value: "3", display: "Tres" });
      JobLocations.insert({ value: "4", display: "Cuatro" });
      JobLocations.insert({ value: "5", display: "Cinco" });
      JobLocations.insert({ value: "6", display: "Seis" });
      JobLocations.insert({ value: "7", display: "Siete" });
      JobLocations.insert({ value: "8", display: "Ocho" });
      JobLocations.insert({ value: "9", display: "Nueve" });
      JobLocations.insert({ value: "10", display: "Zehn" });
    }
});

Meteor.publish("jobLocations", function () {
  return JobLocations.find();
});

Meteor.methods({
    'insertJobLocations': function(companyId, jobLoc) {
        JobLocations.insert({
            jl_companyid: companyId,
            jl_jobloc: jobLoc,
            jl_created_by: Meteor.userId()
        });
    }
});

In \client\main.js:

  Meteor.subscribe("jobLocations");

  Template.tblScheduler.helpers({
    jobLocations: function() {
        return JobLocations.find();
    }
  });

In \client\main.html:

<select name="date1Shift1JobLoc1Count" id="date1Shift1JobLoc1Count">
    {{#each jobLocations}}
        <option value={{jl_jobloc}}>{{jl_jobloc}}</option>
  {{/each}}
</select>

What am I missing or doing wrong?

UPDATE

After removing all the records from the Collection, I changed the server Startup function in server.js to this:

Meteor.startup(function () {
    // code to run on server at startup
    if (JobLocations.find().count() == 0) {
      console.log('JobLocations collection empty; inserting');

      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Uno" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Dos" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Tres" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Cuatro" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Cinco" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Seis" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Siete" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Ocho" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Nueve" });
      JobLocations.insert({ jl_companyid: "axx", jl_jobloc: "Zehn" });
    }
});

...and it still doesn't work.


Solution

  • Try

       jobLocations: function() {
            return JobLocations.find().fetch();
        }