MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose QueryDiffuser les nouveaux résultats

J'ai découvert que pour que cette méthode fonctionne, je devais changer ma collection en une 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');
});

Cela fonctionne car je peux maintenant traiter la MongoDB collection comme quelque chose d'une file d'attente de messages, qui est continuellement mise à jour.

Assez étrangement quand j'enveloppe cela à l'intérieur d'un SocketIO événement je reçois des multiples des mêmes documents ce qui me fait penser qu'il y a encore quelque chose que je ne fais pas exactement bien...