Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用node.js在无限循环中插入MongoDB中的文档_Node.js_Mongodb_Infinite Loop_Mongodb Oplog - Fatal编程技术网

使用node.js在无限循环中插入MongoDB中的文档

使用node.js在无限循环中插入MongoDB中的文档,node.js,mongodb,infinite-loop,mongodb-oplog,Node.js,Mongodb,Infinite Loop,Mongodb Oplog,我正在修改插入到一个MongoDB relpSet中的文档,并使用mongo oplog和node.js将其插入到另一个MongoDB relpSet中 下面我将介绍如何使用node.js在mongo中插入文档。我编写了一个包装器,将文档作为参数插入 function insertMongo(doc) { var insertDocument = function (db, callback) { db.collection('new').insertOne(doc, f

我正在修改插入到一个MongoDB relpSet中的文档,并使用mongo oplog和node.js将其插入到另一个MongoDB relpSet中

下面我将介绍如何使用node.js在mongo中插入文档。我编写了一个包装器,将文档作为参数插入

function insertMongo(doc) {
    var insertDocument = function (db, callback) {
        db.collection('new').insertOne(doc, function (err, result) {
            assert.equal(err, null);
            console.log("Inserted a document into the collection,", result);
            callback();
        });
    };


    MongoClient.connect(url, function (err, db) {
        assert.equal(null, err);
        insertDocument(db, function () {
            db.close();
        });
    });
}
我调用这个包装函数作为创建要插入的json文档的函数(parseJSON)的回调

function parseJSON(data, callback)
{
    var parsedData = {};
    // logic to modify JSON taken from oplog
    // returns populated parsedData object
    callback(parsedData);
}
我在mongo oplog中调用parseJSON,如下所示:

oplog.on('insert', function (doc) {
  var a = JSON.parse(JSON.stringify(doc.o));
  parseJSON(a, insertMongo);
});
插入文档后,这将进入一个无限循环,输出如下:

o: { _id: 56d99e4a95ed520a0814d87a } }
doc { _id: '56d99e4a95ed520a0814d87a' }
{ ts: { _bsontype: 'Timestamp', low_: 41, high_: 1457102410 },
    h: { _bsontype: 'Long', low_: -249545631, high_: 547021855 },
    v: 2,
        op: 'i',
    ns: 'user.new',
    o: { _id: 56d99e4a95ed520a0814d87b } }
doc { _id: '56d99e4a95ed520a0814d87b' }
Inserted a document into the collection,
{ ts: { _bsontype: 'Timestamp', low_: 42, high_: 1457102410 },
    h: { _bsontype: 'Long', low_: -1687338339, high_: 1742865608 },
    v: 2,
    op: 'i',
    ns: 'user.new',
    o: { _id: 56d99e4a95ed520a0814d87c } }
doc { _id: '56d99e4a95ed520a0814d87c' }
Inserted a document into the collection,

感谢您的帮助。谢谢。

看起来您正在从onInsert事件校准插入

oplog.on(“插入”,函数(文档){

var a=JSON.parse(JSON.stringify(doc.o))

parseJSON(a,insertMongo

}))

因此,尝试删除此行以进行测试:

 parseJSON(a, insertMongo);

我正在修改插入到一个MongoDB中的文档,并将其插入到另一个MongoDB中,因此我必须从onInsert事件调用insert。为了更清楚,我编辑了这个问题。谢谢