あるMongoDB relpSetに挿入されたドキュメントを変更し、mongo-oplogとnode.jsを使用して別のドキュメントに挿入しています
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,
どんな助けでも大歓迎です。ありがとうございました。