Javascript 在无休止的循环中迭代更改数据库

Javascript 在无休止的循环中迭代更改数据库,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在使用NodeJS编写的这段代码,它基本上每5秒用相应的ip更新一个Fqdn数据库(一次更新一个条目)。但是,如果我可以使用光标检索当前元素,那么就太好了,这样我就不必对匹配的名称运行查询。我在mongoose文档中没有发现太多关于游标的内容,有什么方法可以做到这一点吗 DatabaseHandler.resolveFqdns = function () { let cursor = Fqdn.find({ }).cursor(); setInterval( function

我正在使用NodeJS编写的这段代码,它基本上每5秒用相应的ip更新一个Fqdn数据库(一次更新一个条目)。但是,如果我可以使用光标检索当前元素,那么就太好了,这样我就不必对匹配的名称运行查询。我在mongoose文档中没有发现太多关于游标的内容,有什么方法可以做到这一点吗

DatabaseHandler.resolveFqdns = function () {
    let cursor = Fqdn.find({ }).cursor();
    setInterval( function () {
        cursor.next(function(error, doc) {
            if(doc){
                debug(doc);
                dns.resolve4(doc.url, (err, addresses) => {
                    if (err) throw err;
                    debug(`addresses: ${JSON.stringify(addresses)}`);

                    // TODO get Element the cursor points to

                    addresses.forEach((a) => {


             // TODO modify element
                });

                // TODO update elementto db
            });
        }else{
            cursor = Fqdn.find({ }).cursor();
        }
    });
}, 5000);

}

光标回调中的
doc
对象是Mongoose文档对象。从文档中:

Mongoose文档表示到MongoDB中存储的文档的一对一映射。每个文档都是其模型的一个实例

因此,您可以使用和方法

您也可以使用
doc.addresses=地址,而不是
doc.set()
,因为它们具有相同的效果。从文档中:

还可以使用.set()修改文档。发动机罩下,油箱尺寸=‘大’;变成tank.set({size:'large'})

什么是“元素”?您能否将您的问题显示为示例
Fqdn
文档或架构定义?
DatabaseHandler.resolveFqdns = function () {
    let cursor = Fqdn.find().cursor();
    setInterval(function () {
        cursor.next(function(error, doc) {
            if(doc){
                debug(doc);
                dns.resolve4(doc.url, (err, addresses) => {
                    if (err) throw err;
                    debug(`addresses: ${JSON.stringify(addresses)}`);

                    // update the document
                    doc.set('addresses', addresses);

                    // save changes
                    doc.save();
                });
            } else {
                cursor = Fqdn.find().cursor();
            }
        });
    }, 5000);
}