sql >> Base de Datos >  >> NoSQL >> MongoDB

Obtenga una colección y agregue un valor a la respuesta

Hay 2 formas de implementar una función de publicación:

  1. Al devolver un cursor (o una matriz de cursores)
  2. Utilizando this.added(), this.changed() y this.removed().

Solo el método 2 permite modificar los documentos devueltos.

Consulte la documentación de Meteor aquí . Sin embargo, dado que el código de muestra proporcionado puede parecer complejo, aquí hay otro:

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

es equivalente 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(); });
});

En la segunda muestra, puede modificar el parámetro 'campo' antes de enviarlo para su publicación, así:

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

Fuente:esta publicación .