我想制作nodejs脚本,它应该在mongodb中使用ping主机并编写结果。现在,我正在利用议程创造就业机会,并在正确的时间开始一个平。如何将执行结果写入数据库?我试着使用Mongoclient,但在我看来,这一点并不是我所需要的。
var ping = require('ping');
const mongo = require('mongodb');
const MongoClient = mongo.MongoClient;
const url = 'mongodb://127.0.0.1:27017/test';
const config = ['10.10.4.45']
const Agenda = require('agenda');
const dbURL = 'mongodb://127.0.0.1:27017/test';
const agenda = new Agenda({
    db: {
        address: dbURL,
        collection: 'jobs',
        options: {
            useNewUrlParser: true,
            useUnifiedTopology: true
        }
    }
});
let counter = 0;
agenda.define('Ping host 10.10.4.45', async job => {
    counter++;
    await console.log('Ping test  #'+counter);
    for(let host of config){
        let res = await ping.promise.probe(host);
        console.log(res.host, res.alive);
    }
});
(async function() {
    await agenda.start();
    await agenda.every('5 seconds', 'Ping host 10.10.4.45');
})();MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("test");
var myobj = [
    { name: 'John', address: 'Highway 71'}
];
    dbo.collection("ping_results").insertMany(myobj, function(err, res) {
        if (err) throw err;
        console.log("Number of documents inserted: " + res.insertedCount);
        db.close();
    });
});发布于 2021-03-30 08:53:14
例如,将下面的代码保存在一个文件中,比如存储库中的ping_results.js,然后使用下面的命令运行它:
node seeding_scripts\ping_results.jsping_results.js文件
const MongoClient = require('mongodb').MongoClient;
const DB_URI = "mongodb://localhost:27017/db_name";
const options = {
  useNewUrlParser: true
};
MongoClient.connect(DB_URI, options, function (err, client) {
  if (err) {
    console.log("ERROR: Failed to connect to database.");
    console.log(err);
    return;
  }
  let dbName = DB_URI.split("/", -1).pop();
  let collectionName = "ping_results";
  let db = client.db(dbName);
  console.log(`Connected to ${dbName} database successfully.`);
  var data = [
    { name: 'John', address: 'Highway 71' }
  ];
  db
    .collection(collectionName)
    .insertMany(data)
    .then(res => {
      console.log(`${res.insertedCount} Documents inserted successfully.`);
      console.log("Database connection closed.");
      client.close();
    })
    .catch(err => {
      console.log(JSON.stringify(err));
      console.log("Database connection closed.");
      client.close();
    });
});https://stackoverflow.com/questions/66867198
复制相似问题