Tag: reconnect

如何在node.js断开连接时cachingMongoDB插入?

我们读了一个XML文件(使用xml-stream ),大约有500k个元素,并且像这样插入到MongoDB中: xml.on(`endElement: product`, writeDataToDb.bind(this, "product")); 在writeDataToDb(type, obj)插入如下所示: collection.insertOne(obj, {w: 1, wtimeout: 15000}).catch((e) => { }); 现在,当Mongo连接断开连接时,xmlstream仍会读取,并且控制台会收到错误消息(无法插入,断开连接,EPIPE断开…)。 在文档中说: 当你closuresmongod进程时,驱动程序停止处理操作,并保持缓冲,因为bufferMaxEntries默认为-1,意味着缓冲所有的操作。 这个缓冲区实际上做了什么? 我们注意到当我们插入数据并closuresmongo服务器时,事情被缓冲,然后我们把mongo服务器备份起来,本地驱动程序成功地重新连接,并且节点恢复插入数据,但是缓冲文档(在mongo beeing offline期间)不被插入再次。 所以我质疑这个缓冲区及其用法。 目标: 我们正在寻找最好的方法来保持插入缓冲,直到mongo回来(在15000毫秒根据wtimeout ),然后插入缓冲的文件或使用xml.pause(); 和我们尝试没有成功的xml.resume() 。 基本上我们需要一点帮助,以便如何处理断开连接而不会丢失数据或中断。