递增不起作用

时间:2016-07-18 23:41:26

标签: javascript node.js mongodb mongoose

我无法让numNotes增加。其他一切似乎都很好。

function getNotes(done) {
  noteSchema.find({}).exec((err, notes) => {
    var numNotes = 0;
    async.each(notes, (n, next) => {
        userSchema.findById(n.userId, (err, user) => {
        if (err || !user) { next(); return; }
        var emailsStr = utils.getEmailsString(user.emails);
            if (!utils.toSkipEmail(emailsStr)) {
                meetingSchema.findById(n.meetingId, function (err, meeting) {
                    if (meeting.name.displayValue.indexOf('test', 'Test') == -1) {
                        numNotes++;
                    }
                });
            }
            next();
        })
    }, (err, result) => {
      console.log(util.format('Total Number of Notes: %d', numNotes));
      done(null);
    });
  });
}

1 个答案:

答案 0 :(得分:2)

我认为您的next()可能会在numNotes++运行之前被调用。这是因为Node.JS是non-blocking并且如果存在异步函数,则不会按顺序运行代码。

要查看之前的操作,请在console.log('test 1')之后设置if(!utils.toSkipEmail(emailsStr)),在console.log('test 2')阻止后设置if (meeting.name.displayValue.indexOf('test', 'Test') == -1){...},在{{之后设置console.log('test3') 1}}阻止。

要解决您的问题,请尝试以下操作:

if(!utils.toSkipEmail(emailsStr)){...}