我在使用node.js时遇到了问题,并对findOne()进行了后续处理。我想找到新的学生,我想添加到数据库中(var novi),而已经存在的学生,我只想更新他们的字段(var stari)。一切都按预期工作,只有当我想返回JSON时,我才将我添加到数据库中的新学生的数量和更新的数量,stari和novi的值都返回0,但是计数很好,我检查了一下。我知道问题出在异步调用上,但我不知道如何解决。
int
答案 0 :(得分:0)
您可以使用async/await
以同步方式进行计数。
'use strict';
app.post('/student', async function (req, res) {
var imeGodine = req.body['godina'];
var {studenti} = req.body;
var broj = 0;
var stari = 0;
var novi = 0;
let god = await db.godina.findOne({where: {nazivGod: req.body.godina}});
let ranijeStudenata = await db.student.count(); // ranijeStudenata not used?
for (var i = 0; i < studenti.length; i++) {
var ime = studenti[i].imePrezime;
var ind = studenti[i].index;
let stud = await db.student.findOne({where: {index: studenti[i].index}});
if (stud === null) {
novi++;
let noviStudent = await db.student.create({imePrezime: ime, index: ind});
god.addStudenti(noviStudent);
} else if (stud !== null) {
stari++;
god.addStudenti(stud);
}
broj++;
}
return res.status(200).send({
message: "Dodano je " + novi + " novih studenata i upisano " + stari + " na godinu " + imeGodine
});
});