MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ottieni una raccolta e aggiungi un valore alla risposta

Esistono 2 modi per implementare una funzione di pubblicazione:

  1. Restituendo un cursore (o un array di cursori)
  2. Utilizzando this.added(), this.changed() e this.removed().

Solo il metodo 2 consente di modificare i documenti restituiti.

Fare riferimento alla documentazione di Meteor qui . Tuttavia, poiché il codice di esempio fornito potrebbe sembrare complesso, eccone un altro:

// server: publish the rooms collection
Meteor.publish("rooms", function () {
  return Rooms.find({});
});

equivale a:

// server: publish the rooms collection
Meteor.publish("rooms", function () {
  var self = this;
  var handle = Rooms.find({}).observeChanges({
    added:   function(id, fields) { self.added("rooms", id, fields); },
    changed: function(id, fields) { self.changed("rooms", id, fields); },
    removed: function(id)         { self.added("rooms", id); },
    }
  });
  self.ready();
  self.onStop(function () { handle.stop(); });
});

Nel secondo esempio, puoi modificare il parametro 'field' prima di inviarlo per la pubblicazione, in questo modo:

added: function(id, fields) { 
    fields.newField = 12;
    self.added("rooms", id, fields); 
},

Fonte:questo post .