sql >> Databáze >  >> NoSQL >> MongoDB

Vytvořte reaktivní publikaci s dalšími poli v každém dokumentu

Ponechat pole soukromá, i když jsou součástí databázového dotazu, je poměrně snadné. Poslední argument pro self.added je objekt předávaný klientovi, takže můžete odstranit/upravit/smazat pole, která posíláte klientovi.

Zde je upravená verze vašich houslí. To by mělo dělat to, co požadujete. (Abych byl upřímný, nejsem si jistý, proč jste měli něco po observeChanges funkce ve vašich houslích, takže vám možná nerozumím, ale při pohledu na zbytek vaší otázky by to mělo být ono. Omlouvám se, pokud jsem to pochopil špatně.)

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. Získejte data z kolekce b, která není v kolekci a, v dotazu prostředí MongoDB

  2. MongoDB vs. DynamoDB:Co potřebujete vědět

  3. Reverzní stránkování prostřednictvím seřazené sady Redis

  4. Mongo pořadí podle délky pole