Node.js中的MongoDb侦听器

Node.js中的MongoDb侦听器,node.js,mongodb,listener,Node.js,Mongodb,Listener,我想根据条件监听MongoDb集合中的新记录,并通过Socket.Io将它们发送给客户端 在我看来,应该是这样的: var lastTime = Date.now(); while(true) { getRecordsLaterThan(lastTime, function(results) { if (results) { for (let result of results) { lastTime = resul

我想根据条件监听MongoDb集合中的新记录,并通过Socket.Io将它们发送给客户端

在我看来,应该是这样的:

var lastTime = Date.now();
while(true) {
    getRecordsLaterThan(lastTime, function(results) {
        if (results) {
            for (let result of results) {
                lastTime = result.created_on;
                // send result via Socket.Io
            }
        }
    });
    // sleep(200 ms)
}
我对Node和JS非常陌生,有时仍然很难理解它的执行流程。在这种情况下,a不知道如何在每次迭代后使循环休眠


此外,我还怀疑Node是否应该以完全不同的方式进行操作。

经过一番阅读,我想我找到了使用递归和setTimeout以特定于节点的方式进行操作的方法:

var lastTime = Date.now();

function listen() {
    getRecordsLaterThan(lastTime, function(results) {
        if (results) {
            for (let result of results) {
                lastTime = result.created_on;
                // send result via Socket.Io
            }
        }
    });
    setTimeout(listen, 200);
}

listen();

查看此套餐:@JAM谢谢,但我认为它不符合我的要求。我需要用特定的查询条件来听集合,但我看不出如何使用这个库来完成。我认为它适用于您的场景。您可以在数据库更改时(通过使用mongo watch)进行查询,而不是像现在这样轮询(每200毫秒一次),然后决定是否需要使用socket.io广播结果。这将是一个基于事件的解决方案,并且可以减轻数据库和服务器的压力。@JAM很有意义,谢谢!我会考虑的。