程序执行命令而不是按照它们放入的逻辑顺序执行

时间:2017-03-30 12:59:29

标签: javascript node.js mongodb express

router.post('/register', (req, res, next) => {
var subjectsID = [];
if (req.body.hasOwnProperty('subjects')) {
    console.log("Teacher have subjects");
    for (var i = 0; i < req.body.subjects.length; i++) {
        Subject.getSubjectByName(req.body.subjects[i], (error, subject) => {
            if (error) throw error;
            if (!subject) {
                res.json({
                    success: false,
                    msg: "One of the entered subjects dosent exist",
                    subject: req.body.subjects[i],
                    error: error
                });
            } else{
                console.log("Subject by id : " + subject._id + " is verified");
                subjectsID.push(subject._id);
            }
        });
    }
    console.log("All subjects verified");
    console.log(subjectsID);
}

我的主要问题是:当我输入这个URL的信息时,在得到console.log("All subjects verified");之前我得到了subjectsID.push(subject._id);所以在下一个代码段(未发布)中,数组是空的,我不能拉出所需的信息。我该如何修复它以便它首先执行for循环,然后才会进入下一个代码段。

子问题:当我输入一个不在DB中的主题(mongoDB,mongoose)时,subject: req.body.subjects[i]行关闭了我的程序并出现错误:发送后不能设置标题。我确定它与我的主要问题有关,所以我们会欢迎基本的解释。

0 个答案:

没有答案