Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.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_Database_Sqlite_Node Sqlite3 - Fatal编程技术网

Javascript 在它之前更改数据';在函数中使用

Javascript 在它之前更改数据';在函数中使用,javascript,node.js,database,sqlite,node-sqlite3,Javascript,Node.js,Database,Sqlite,Node Sqlite3,我一直在试图为数据库中的每张过期票发送电子邮件。它的剪报看起来像这样: for (var i = 0; I < rows.length; ++i) { if (today > new Date(rows[i].end_date)) { (function(id) { db.exec('update tickets ' + 'set status="expired" ' +

我一直在试图为数据库中的每张过期票发送电子邮件。它的剪报看起来像这样:

for (var i = 0; I < rows.length; ++i) {
    if (today > new Date(rows[i].end_date)) {
        (function(id) {
            db.exec('update tickets ' +
                    'set status="expired" ' +
                    'where ticket_id= ' + id + ';' +
                    'insert into changes ' +
                    'values(' + id + ',' +
                        '"system",' +
                        '"ticket expired",' +
                        '"' + (today.getUTCMonth() + 1) +
                        '/' + today.getUTCDate() +
                        '/' + today.getUTCFullYear() +
                    '");',
                    function(err) {
                        if (err) {
                            console.log(err);
                            return;
                        }

                        console.log(id);
                        sendAlert(id);
                    }
            );
        })(rows[i].ticket_id);
    }
}
for(变量i=0;i新日期(行[i].结束日期)){
(功能(id){
db.exec('更新票据'+
'set status=“expired”'+
'where ticket_id='+id+';'+
“插入到更改中”+
'值('+id+','+
"系统",+
“票过期了”+
“”+(today.getUTCMonth()+1)+
“/”+today.getUTCDate()+
“/”+今天。getUTCFullYear()+
'");',
功能(err){
如果(错误){
控制台日志(err);
返回;
}
console.log(id);
发送警报(id);
}
);
})(第[i]行。票证号);
}
}
如您所见,我尝试使用匿名函数来防止每次调用中的数据发生更改,但仍然无法工作


我不知道我是否遗漏了什么。

似乎此任务的执行是异步的。当您需要在异步调用上迭代时,操作顺序是不能保证的

也许您需要一些控制流库,例如。即使在迭代中,也有一些方法来控制这些流