当到达数据库中存储的未来日期、时间时,如何触发 Node JS 中的事件?

Sai*_*h A 3 javascript triggers mongodb node.js reactjs

我向用户提供一项功能,“他们在下达订单时选择近期的时间和日期。此订单时间和日期存储在数据库中。”

当达到数据库中的时间和日期时,如何触发函数来执行某些操作?

我将分别使用 Node JS、Express JS、Mongo DB、React JS 作为后端、服务器、数据库和前端。我要求的是架构或创建如何执行此操作的触发器,而不是完整的代码。

任何支持 NPM 包的推荐都会有所帮助。谢谢。

注意:这是我第一次使用任何语言开发应用程序。我只是从 Udemy 课程中学到了这些技术。该应用程序将让用户选择未来的日期,当到达未来日期时,应用程序会为他们执行一些功能。

Jon*_*lms 6

创建订单集合:

 const orders = db.collection("orders");
Run Code Online (Sandbox Code Playgroud)

然后在到期日创建索引以加快索引速度:

orders.createIndex({ dueDate: 1 });
Run Code Online (Sandbox Code Playgroud)

现在你可以启动一个服务来获取最低日期,并检查是否已经达到,否则睡眠:

const sleep = ms => new Promise(res => setTimeout(res, ms));

(async function() {
  while(true) {  // check forever
    await sleep(2000);
    const cursor = orders.find({ dueDate: { $lte: Date.now() }, processed: false }); // only take those that are done but not yet processed
    while(await cursor.hasNext()) {
      const order = await cursor.next();   
      // process order
      await orders.updateOne(order, { $set: { processed: true }});
    }
  }
})();
Run Code Online (Sandbox Code Playgroud)

然后只需将新文档添加到该集合中即可观看神奇的效果:)

 orders.insertOne({ processed: false, dueDate: Date.now() + 5000 });
Run Code Online (Sandbox Code Playgroud)