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]行。票证号);
}
}
如您所见,我尝试使用匿名函数来防止每次调用中的数据发生更改,但仍然无法工作
我不知道我是否遗漏了什么。似乎此任务的执行是异步的。当您需要在异步调用上迭代时,操作顺序是不能保证的 也许您需要一些控制流库,例如。即使在迭代中,也有一些方法来控制这些流