title: Meteor secure subscribe & publish
body: <p>This Meteor code needs to publish one document which has field <code>plateNum</code> match value that is entered by the user.<br>
   Why is it not returning any thing? How to fix it?</p>
  
  <p>//server.publications.js</p>
  
  <pre><code>Meteor.publish('myCol', function (plate) {
    if (this.userId &amp;&amp; plate) {
      return myCol.find({plateNum: plate}, {fields: {a: 1, b: 1, c: 1, engineSize: 1 }});
    }
  });
  </code></pre>
  
  <p>The values of the fields 'a', 'b', 'c' may not be ready at the time of the user request but will be calculated by a backend worker and update the <code>myCol</code>  </p>
  
  <p>//client.main.js</p>
  
  <pre><code>Meteor.subscribe('myCol', dict.get('plateNum'));  //&lt;== stored info from user
  
  Template.footer.events({
    'click #info': () =&gt; {
      searching = '&lt;span class="note"&gt;Searching...&lt;/span&gt;';
      let plate = document.getElementById('plateNum').value;
      plate = plate.replace(/\W/g, '').toLowerCase().trim();  //
      dict.set('plateNum', plate);  //&lt;=== store user info here
  
      let doc = myCol.findOne({plateNum: plate});
      if (!doc || !doc.a) Meteor.call('aaa', plate);
      if (doc &amp;&amp; !doc.b) Meteor.call('bbb', {plateNum: plate}, () =&gt; {});
      if (doc &amp;&amp; doc.c &amp;&amp; !doc.c) Meteor.call('ccc', {plateNum: plate}, () =&gt; {});
    }
  });
  </code></pre>