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

Meteor:publikujte 2 různé projekce prvků pole

Zkoumal jsem různé přístupy. Problém lze vyřešit případ od případu pečlivým výběrem polí a sledováním objednávky předplatného, ​​ale tato řešení jsou chatrná a spoléhají na nezdokumentované svévolné podmínky.

Jediným skutečným obecným řešením je virtuální sbírka . Nejjednodušším případem je jednoduše publikování kurzoru pod jiným názvem kolekce na straně klienta. Například:

function publishVirtual(sub, name, cursor) {
  var observer = cursor.observeChanges({
    added  : function(id, fields) { sub.added(name, id, fields) },
    changed: function(id, fields) { sub.changed(name, id, fields) },
    removed: function(id)         { sub.remove(name, id) }
  })

  sub.onStop(function() {
    observer.stop() // important. Otherwise, it keeps running forever
  })
}

A pak ve vaší publikaci místo vracení cursor :

var cursor = Users.find()
publishVirtual(this, 'virtualUsers', cursor)
this.ready()



  1. Embedded MongoDB při spouštění integračních testů

  2. Kaa Java SDK se nesynchronizuje s KAA Sandbox MongoDB na AWS

  3. Mongoose, jak napsat dotaz s podmínkou if?

  4. MongoDB nemůže použít díl k procházení prvkem