MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Buat publikasi reaktif dengan bidang tambahan di setiap dokumen

Relatif mudah untuk menjaga kerahasiaan bidang meskipun itu adalah bagian dari kueri basis data. Argumen terakhir untuk self.added adalah objek yang diteruskan ke klien, sehingga Anda dapat menghapus/memodifikasi/menghapus bidang yang Anda kirim ke klien.

Ini adalah versi modifikasi dari biola Anda. Ini harus melakukan apa yang Anda minta. (Sejujurnya saya tidak yakin mengapa Anda memiliki sesuatu yang dirantai setelah observeChanges berfungsi di biola Anda, jadi mungkin saya salah paham dengan Anda, tetapi melihat sisa pertanyaan Anda, ini seharusnya. Maaf kalau salah.)

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 $lookup Objectid mendapatkan array kosong?

  2. MongoDB $milidetik

  3. Performa agregasi pencarian yang buruk

  4. mongodb, replika dan error:{ $err :not master and slaveOk=false, code :13435 }

  5. Mengapa MongoDB memakan begitu banyak ruang?