MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Създайте реактивна публикация с допълнителни полета във всеки документ

Сравнително лесно е да запазите полетата поверителни, дори ако са част от заявката към базата данни. Последният аргумент за self.added е обектът, който се предава на клиента, така че можете да премахнете/промените/изтриете полета, които изпращате на клиента.

Ето модифицирана версия на вашата цигулка. Това трябва да направи това, което искате. (Честно казано, не съм сигурен защо сте имали нещо оковано след observeChanges функция във вашата цигулка, така че може би съм ви разбрал погрешно, но като гледам останалата част от въпроса ви, това би трябвало да е това. Съжалявам, ако съм сбъркал.)

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. свързване към локален mongodb от докер контейнер

  2. Как да поправя моя mongodb?

  3. Как да създадете потребител в mongodb с docker-compose

  4. Ръчно предоставяне на аргументи към заявка на MongoDB за поддържане на функция за съпоставяне (за индекс, нечувствителен към малки и големи букви)

  5. MongoDB $setOnInsert