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

Метеор:публикувайте 2 различни проекции на елементи от масива

Разгледах различни подходи. Проблемът може да бъде разрешен за всеки отделен случай чрез внимателно избиране на полета и следене на реда на абонамента, но тези решения са крехки и разчитат на недокументирани произволни условия.

Единственото реално, общо решение е виртуална колекция . Най-простият случай е просто да публикувате курсор под различно име на колекция от страна на клиента. Например:

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
  })
}

И след това, във вашата публикация, вместо връщане на cursor :

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:Неправилно формирана гео заявка с $geoIntersect върху многоъгълник

  2. Изглежда, че когато направя fs.writeFile(), промененият файл рестартира nodemon. Как да не се рестартира?

  3. Mongodb в линукс сървър

  4. Mongodb обобщена заявка за конкретни записи вместо колекция

  5. Експортирайте и използвайте повторно моята mongoose връзка в множество модели