就像我的标题所说,我正在尝试将Mongo-Watch模块(https://github.com/TorchlightSoftware/mongo-watch)和Variety模块(https://github.com/variety/variety)结合起来,以便我可以让Variety返回MongoDB的所有键它被修改后的集合。因为Variety是一个命令行工具,我使用childspawn.exec来启动它(它会将结果转储到另一个MongoDB集合中)。
当下面的代码运行时,似乎启动命令任意次数,直到我得到“错误:生成EMFILE”。有什么想法吗?
如果我自己运行“exec(cmd ...)”,而不将其包装在观察者中,它将按原样运行 - 这是一次。 如果我用cmd替换一个简单的“ls”(比如Unix ls命令),它可以很好地工作,显示一个ls调用的结果。
谢谢!
var cmd = "mongo " + config.dbUrl + " --eval " + '\"var collection = \'' + config.collect[0] + '\'\"' + " variety.js "
var target = db[config.collect[0]]; //eg. varietyResults.test3
watcher.watch(target, function(event) { //Watch Mongo oplog for any changes to source
exec(cmd, function(err, stdout, stderr) {
console.log(stdout);
})
});