【发布时间】:2021-09-02 10:02:24
【问题描述】:
我使用 Cron 模块创建了一个 cron 作业。目前,我在crawler.js 文件中声明了cron 作业,在settings.js 文件中声明了它的cron 规则,如下所示:
文件settings.js:
const cronCrawlItemsRule = '0 */10 * * * *'
module.exports = { cronCrawlItemsRule }
文件crawler.js:
const connectDB = require('./config/db');
connectDB();
const { cronCrawlItemsRule } = require './settings.js';
const crawlItems = new CronJob(cronCrawlItemsRule, async function() {
// do stuff here and save to DB that connected above.
})
问题: 我想将 cron 规则保存到 DB,然后每当我启动服务器时,获取这些 cron 规则 和crons 将按照 规则 运行。 请注意,这些规则将在一旦服务器启动后获得。
可以这样做吗?我试过如下:
const connectDB = require('./config/db');
connectDB();
const { cronCrawlItemsRule } = require './settings.js';
(async() => {
const rule = (await Config.findOne({...}))?._doc.value || cronCrawlItemsRule; // <- here
const crawlItems = new CronJob(rule, async function() { // <- and here
// do stuff here and save to DB that connected above.
})
})()
但是当我在其他文件中需要这些规则时,我必须再次从数据库中获取这些规则。
有人知道怎么做吗?提前致谢。
【问题讨论】:
标签: javascript node.js express cron