javascript - 使用 Javascript 扫描 Mongo 数据库并在字符串不相同时触发事件

标签 javascript node.js mongodb

我正在尝试使用 Javascript 算法来循环遍历我的 MongoDB,搜索两个相同的 URL,并对 header 对象进行分析。

下面是该对象示例的片段:

{
    "url": "www.professionalsupplementcenter.com",
    "date": "Tue Mar 26 2013 15:08:31 GMT-0400 (EDT)",
    "headers": {
        "server": "Microsoft-IIS/7.5",
        "x-aspnet-version": "4.0.30319",
        "x-powered-by": "ASP.NET"
    }
}

具体来说,我将有两个收藏。这两个集合是 MongoDB 中两个数据库的 HTTP header 抓取间隔两个月。我们将它们称为 todayScrapetwoMonthFromNowScrape。通过这两个集合,我想比较它们的 header 对象,例如 serverx-aspnet-versionx-powered-by 并查看这些数字中是否有任何升级,例如IIS/7.5 升级到 IIS/8.0(将来)。

我没有任何代码可以显示,因为我根本不知道如何实现这个系统。我不知道从哪里开始。我想首先比较这两个URL,然后当程序识别出这两个URL都存在时,它会对这三个 header 对象进行具体比较。然后,它可以通过按顺序扫描这些属性来报告这些属性何时发生更改,并在字符串不相同时触发一些事件,例如 console.log("There has been a change")

有人可以给我一些关于从哪里开始的建议吗?我已经在这个问题上陷入困境几天了,陷入困境令人沮丧。我真的很想开始实现它,但我需要一些帮助。

最佳答案

您需要的第一件事是npm install mongodb(如果您还没有)。然后在您的 app.js 文件中:

var mongodb = require('mongodb');
var Server = mongodb.Server('127.0.0.1', 27017, {});
new mongodb.Db('scraperapp', Server, {w: 1}).open(function(err, db){
  var scrape = new mongodb.Collection(db, 'scrape');
  var scrapeFuture = new mongodb.Collection(db, 'scrapeFuture');
  scrape.find({url: {$exists: true}}).toArray(function(err, today_docs){
    if(!today_docs) return;
    var scrapeFn = function(i){
      var today_doc = today_docs[i];
      scrapeFuture.findOne({url: today_doc.url}, function(err, future_doc){
        if(!future_doc) return;
        if(today_doc.headers.server != future_doc.headers.server)
          console.log(today_doc.url + ':servers different');
        if(today_doc.headers['x-aspnet-version'] != future_doc.headers['x-aspnet-version'])
          console.log(today_doc.url + ':x-aspnet-versions different');
        if(today_doc.headers['x-powered-by'] != future_doc.headers['x-powered-by'])
          console.log(today_doc.url + ':x-powered-by different');
        if(today_docs[i+1]) scrapeFn(i+1);
      });
    }
    scrapeFn(0);
  });
});

关于javascript - 使用 Javascript 扫描 Mongo 数据库并在字符串不相同时触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15645574/

相关文章:

javascript - 在 node.js 中捕获 ReferenceError 或 TypeError 的最佳方法是什么?

javascript - 我的自定义 javascript 轮播无法正常工作

node.js - 如何在 Jade 模板中预填充编辑页面(Node + Express + Jade)

javascript - ExpressJS向数据库添加记录后重新查询数据库

javascript - Strongloop:隐藏 PersistedModel 上的默认方法

Javascript类实例问题

javascript - Ajax 输出 w/css 样式

node.js - 如何在异步调用后通过管道传输流而不丢失数据?

node.js - 将react-scripts版本从3.4.0更新到5.0.0导致类型错误: Cannot read properties of undefined (reading 'getStackAddendum' )

mongodb - 在 Mongo-go-driver 中创建一个独特的字段