title: Let publication return modified/"fake"/non-database data, still queryable by client
body: <p>A standard publication would look something like this:</p>
  
  <pre><code>Meteor.publish('suggestions', function(query){
      return MyDB.find({param: query});
  }
  </code></pre>
  
  <p>and the results, once subscribed to, would then be accessible in the client by simple doing <code>MyDB.find(...);</code>. </p>
  
  <p>However, how would I implement</p>
  
  <p>(a) Some kind of pre-processing, meaning I add or remove certain properties to the queried documents on the server side, that should then still be queryable client-side?</p>
  
  <p>(b) returning fake data, i.e. data following the database schema and still being queryable client-side, but not actually being present server side?</p>
  
  <p>Example:</p>
  
  <pre><code>Meteor.publish('suggestions', function(query){
      //Stuff in database: [{prop1: 'first'}, {prop1: '2nd'}]
      if(query == 'something') { //Fake data
          return [{prop1: 'hello', prop2: 42}];
      } else {
          result = MyDB.find().fetch();
          result.forEach(function(element) {
              element.prop2 = random_number;
          }
          return result;
      }
  }
  </code></pre>
  
  <p>So if I then subscribe to 'suggestions' on the client, I'd like to see the following:</p>
  
  <pre><code>//Subscribed with query 'something':
  var arr = MyDB.find().fetch();
  //arr equals [{prop1: 'hello', prop2: 42}]
  
  Subscribed with another query
  var arr = MyDB.find().fetch();
  //arr equals [{prop1: 'first', prop2: random_number}, {prop1: '2nd', prop2: random_number}]
  </code></pre>
  
  <p>Basically, as said above, I want the database data to be modified a bit or completely before being sent to the client, but then the client should be able to query it as if it was coming directly from the database.</p>
  
  <p>How would I go about doing this?</p>