sequelize node.js中的findOne()问题

时间:2019-01-16 00:29:33

标签: node.js sequelize.js

我在使用node.js时遇到了问题,并对findOne()进行了后续处理。我想找到新的学生,我想添加到数据库中(var novi),而已经存在的学生,我只想更新他们的字段(var stari)。一切都按预期工作,只有当我想返回JSON时,我才将我添加到数据库中的新学生的数量和更新的数量,stari和novi的值都返回0,但是计数很好,我检查了一下。我知道问题出在异步调用上,但我不知道如何解决。

int

Picture of code

1 个答案:

答案 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
  });

});