gpt4 book ai didi

node.js - Sequelize Node.js 中的 findOne() 问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:59 25 4
gpt4 key购买 nike

我在使用 node.js 和 Sequelize findOne() 时遇到问题。我想找到新学生,我想将其添加到数据库(var novi),而那些已经存在的学生,我只想更新他们的字段(var stari)。一切都按预期进行,只有当我想返回 JSON 时,我向数据库添加了多少新学生,以及更新了多少学生,stari 和 novi 的值返回到 0,但计数良好,我检查过。我知道问题出在异步调用上,但我不知道如何修复。

app.post('/student', function(req,res) {
var imeGodine = req.body['godina'];
//POMOĆNE SKRIPTE BitBucket.js i citanjeGodina.js
var broj = 0;
var stari = 0;
var novi = 0;
db.godina.findOne({where:{nazivGod:req.body.godina}}).then(god => {
var studenti = req.body.studenti;
db.student.count().then (ranijeStudenata => {
for(var i = 0; i<studenti.length; i++) {
var ime = studenti[i].imePrezime;
var ind = studenti[i].index;
db.student.findOne({where:{index :studenti[i].index}}).then(stud => {
if (stud == null) {
novi++;
db.student.create({imePrezime:ime, index : ind}).then(noviStudent => {
god.addStudenti(noviStudent);
});
}
else if (stud != null) {
stari++;
god.addStudenti(stud);
}
});
broj++;
}
var brojNovih = broj - ranijeStudenata; //ne koristi se, ali možda hoće
res.set("Content-Type", "application/json");
res.status(200).send(JSON.stringify({message: "Dodano je " + novi + " novih studenata i upisano " + stari + " na godinu " + imeGodine}));
});
});
});

Picture of code

最佳答案

您可以使用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
});

});

关于node.js - Sequelize Node.js 中的 findOne() 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54208787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com