sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose QueryTransmitir nuevos resultados

Descubrí que para que este método funcionara, necesitaba cambiar mi colección a una capped collection :

var OrderSchema = new Mongoose.Schema({...
}, { capped: { size: 10, max: 10, autoIndexId: true }});

var Orders = db.model('orders', OrderSchema);

var stream = Orders.find().tailable().stream();

stream.on('data', function(doc){
    console.log('New item!');
    console.log(doc);
}).on('error', function (error){
    console.log(error);
}).on('close', function () {
    console.log('closed');
});

Esto funciona porque ahora puedo tratar la MongoDB collection como una especie de cola de mensajes, que se actualiza continuamente.

Por extraño que parezca, cuando envuelvo esto dentro de un SocketIO evento obtengo múltiplos de los mismos documents lo que me hace pensar que todavía hay algo que no estoy haciendo exactamente bien...