Node.js NodeJS回调:跟踪数据库调用以便可以终止进程
这个月我收到了Heroku的账单,这让我很惊讶。幸运的是,它只花了几美元,但我认为我的使用率并没有那么高。我查了一下账单,上面说我上个月用了大约1000个小时。我有点困惑,因为我的应用程序每小时只运行几秒钟来发送一些电子邮件,但后来我意识到这个过程并没有终止Node.js NodeJS回调:跟踪数据库调用以便可以终止进程,node.js,heroku,mongoose,semaphore,Node.js,Heroku,Mongoose,Semaphore,这个月我收到了Heroku的账单,这让我很惊讶。幸运的是,它只花了几美元,但我认为我的使用率并没有那么高。我查了一下账单,上面说我上个月用了大约1000个小时。我有点困惑,因为我的应用程序每小时只运行几秒钟来发送一些电子邮件,但后来我意识到这个过程并没有终止 在注释了大量代码之后,我确定进程不会退出,因为我的mongoose数据库连接仍然处于打开状态。但我有几个嵌套的回调到数据库,然后到mailgun发送这些电子邮件,有时mailgun回调有自己的mailgun回调。我如何跟踪这些信息并确保数据
在注释了大量代码之后,我确定进程不会退出,因为我的mongoose数据库连接仍然处于打开状态。但我有几个嵌套的回调到数据库,然后到mailgun发送这些电子邮件,有时mailgun回调有自己的mailgun回调。我如何跟踪这些信息并确保数据库最终关闭?我问我的JS忍者朋友,他说要使用。这听起来令人望而生畏,但实际上非常简单
npm install semaphore --save
包页。然后,对于每个数据库调用,我都执行以下操作:
sem.take(function () {
Object.find({key: value}, function () {
sem.leave(); // (I don't need the database anymore)
// tons of other code
});
});
然后我确保所有这些代码都在这之前运行:
sem.take(function () {
sem.leave();
db.close();
});
我想我可能需要对正在发生的事情有更深入的了解,但现在这是可行的