sql >> Databasteknik >  >> NoSQL >> MongoDB

Bygg en reaktiv publikation med ytterligare fält i varje dokument

Det är relativt enkelt att hålla fält privata även om de är en del av databasfrågan. Det sista argumentet till self.added är objektet som skickas till klienten, så du kan ta bort/ändra/ta bort fält som du skickar till klienten.

Här är en modifierad version av din fiol. Detta bör göra vad du ber om. (För att vara ärlig så är jag inte säker på varför du hade något kedjat efter observeChanges funktion i din fiol, så jag kanske missförstår dig, men om du tittar på resten av din fråga borde det vara det. Ursäkta om jag fattade fel.)

var self = this;

// Modify the document we are sending to the client.
function filter(doc) {
  var length = doc.item.length;

  // White list the fields you want to publish.
  var docToPublish = _.pick(doc, [
      'someOtherField'
  ]);

  // Add your custom fields.
  docToPublish.itemLength = length;

  return docToPublish;                        
}

var handle = myCollection.find({}, {fields: {item:1, someOtherField:1}})
            // Use observe since it gives us the the old and new document when something is changing. 
            // If this becomes a performance issue then consider using observeChanges, 
            // but its usually a lot simpler to use observe in cases like this.
            .observe({
                added: function(doc) {
                    self.added("myCollection", doc._id, filter(doc));
                },
                changed: function(newDocument, oldDocument)
                    // When the item count is changing, send update to client.
                    if (newDocument.item.length !== oldDocument.item.length)
                        self.changed("myCollection", newDocument._id, filter(newDocument));
                },
                removed: function(doc) {
                    self.removed("myCollection", doc._id);                    
                });

self.ready();

self.onStop(function () {
  handle.stop();
});


  1. Så här gör du:Aktivera användarautentisering och auktorisering i Apache HBase

  2. Använder memcached eller Redis på aws-elasticache

  3. doRedis med konstigt socket-anslutningsfel i Ubuntu Linux, R och RStudio

  4. Django-nonrel vs Django-mongodb vs Mongokit vs pymongo native