将数据保存到同一模块或主应用程序中的数据库?

Saving data to database in same module or main app?

我写了一个模块来抓取网站并提取一些信息。我想将此信息保存在数据库中。是在模块中定义一个保存函数将数据存储到数据库中还是在主应用程序中获取信息并将其保存到数据库中更好?

第一次实施:

//myModule.js
const puppeteer = require('puppeteer');
module.exports = class example {
    async saveToDB() {
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        await page.goto('...');
        let x = await page.evaluate(() => {
            ...
            return x;
        });
        await browser.close();
        //save x to DB
    }
}

//app.js
const MyModule = require('./myModule');
let myModule = new MyModule();
setInterval(() => {
    myModule.saveToDB();
}, 10000)

第二次实施:

//myModule.js
const puppeteer = require('puppeteer');
module.exports = class example {
    async getInfo() {
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        await page.goto('...');
        let x = await page.evaluate(() => {
            ...
            return x;
        });
        await browser.close();
        return x;
    }
}

//app.js
const MyModule = require('./myModule');
let myModule = new MyModule();
setInterval(() => {
    let x=myModule.getInfo();
    //save x to DB
}, 10000)

如果你有最好的建议,请告诉我。

答案会有偏差。

我喜欢第二个版本,其中分别有抓取功能、数据库功能和connector/main功能。

这样,抓取功能与数据库功能没有任何关系,但我们仍然可以抓取数据并将其保存到数据库中。它是模块化的、可扩展的、易于阅读和维护的。

在第一个版本中,saveToDB 实际上是抓取页面然后进行一些保存,这是一种误导。 saveToDB 应该只执行 saveToDB。

您可以在下面了解有关代码气味和设计模式的更多信息,