Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器崩溃后重新生成状态_Javascript_Node.js - Fatal编程技术网

Javascript 服务器崩溃后重新生成状态

Javascript 服务器崩溃后重新生成状态,javascript,node.js,Javascript,Node.js,我正在研究一个解决方案,用于在崩溃后重新生成web应用程序的状态。 例如,我的应用程序能够创建发票,并使用idCounter对这些发票进行编号。如果应用程序崩溃,则需要从数据库中提取最后一个invoiceNr并用于重置idCounter 在我的路线模块中,我有如下代码: var idCounter = null; db.invoices.findOne({}, null, {sort: {'invoiceNr': -1}}, function(err, doc) { if (err)

我正在研究一个解决方案,用于在崩溃后重新生成web应用程序的状态。 例如,我的应用程序能够创建发票,并使用idCounter对这些发票进行编号。如果应用程序崩溃,则需要从数据库中提取最后一个invoiceNr并用于重置idCounter

在我的路线模块中,我有如下代码:

var idCounter = null;

db.invoices.findOne({}, null, {sort: {'invoiceNr': -1}}, function(err, doc) {
    if (err) {
        return next(err);
    }
    idCounter = doc.invoiceNr;
}); 
这很好,但我担心icCounter是通过回调设置的,这意味着理论上用户可以触发一些需要idCounter的代码,比如在触发回调之前创建一个新的发票,因此得到错误的变量


web应用程序崩溃后,您使用何种模式进行状态重新生成?

在启动时使用此模式,并且在启动之前,不要初始化可能会创建发票的主应用程序。您不需要在应用程序中维护idCounter。这项工作应该由您的数据库完成。@Bergi:好的,但是如果我的应用程序中没有维护icCounter,我必须在每次创建新发票操作中获取最新发票以获取最新的nr。。。然后,每次创建发票时,我需要两个查询,而不是一个,但您仍然认为这样更好吗?或者我误解了你的意思吗?不,我说你的数据库应该有一个在插入操作中自动创建递增ID的方法。