2015-05-30 3 views
-1

Я рождаюсь новым для node.js, и безжалостно я должен решить ошибку в письменной кодировке. Я пытаюсь обновить членов группы следующей службой, и всякий раз, когда я пытаюсь вызвать этот API, я получил ошибку какAsyncNodeJS: Ошибка: обратный звонок уже был вызван

Ошибка: Callback уже был вызван.

Мой код:

'app.post('/api/updateGroup/:group_id', function (req, res) { 
    var checkGroup = Group.findOne({'_id': req.params.group_id}).exec(); 
    checkGroup.addBack(function(err , existingGroup) { 
     if (err) { 
      res.json({'message' : err }); 
     }else if(existingGroup){ 

Group.findOne({ '_id': req.params.group_id }) 
     .execQ() 
     .then(function(existingUser) { 
      var friendphoneNumber = req.body.friendphoneNumber.split(','); 

      var friends = []; 
      console.log('existingUser', friendphoneNumber); 

      async.each(friendphoneNumber, function(phonenum, callback) { 

       var phonenum = phonenum.split("\'")[0]; 
       console.log('phonenum', phonenum); 

       User.findOne({ 
        'phoneNumber': phonenum 
       }) 
       .execQ() 
       .then(function(existingFriend) { 

        if(existingFriend === null) { 
         friends.push({ 
          'details': { 
           'phoneNumber': phonenum 
          } 
         }); 
         callback(); 

        } else { 

         friends.push({'details': existingFriend}); 
         callback(); 
        } 

       }) 
       .catch(function(err) { 
        console.log('err', err) 
        friends.push({ 
         'details': { 
          'phoneNumber': phonenum 
         } 
        }); 
        callback(); 
       }) 
       .done(function() { 

       }); 

      }, function(err) { 
       console.log('callback') 

       group.group_id = req.params.group_id; 
       // group.user_id = req.body.userId; 
       // group.createdDate = moment().format('YYYY-MM-DD hh:mm a'); 

       group.friends = friends; 

       group.update(function(err) { 
        if (err) { 
         res.json({ 
          message: err 
         }); 
        } else { 

         res.json({ 
          success: 1, 
          message: 'Group updated', 
          group: group 
         }); 
        } 
       }); 


      }); 

     }) 
     .catch(function(err) { 
      res.json({ 
       success: 0, 
       message: 'user id Not Match. Please try again' 
      }); 

     }) 
     .done(function(events) { 


     }); 
    } 
    else { 

     console.log('nope'); 
    } 

}); 


}); 

Пожалуйста, помогите мне с вопросом ... Я видел несколько ответов относительно того же, но до сих пор я не могу решить эту проблему!

+1

Вы знаете, откуда эта ошибка? Это происходит из асинхронной библиотеки? – jfriend00

+0

Я не знаю. извините – AAA

+0

вы можете разместить вывод ошибки – Sgnl

ответ

4

Если callback вызывает ошибку, он будет вызываться как в then, так и в catch. Вероятно, вы должны называть его функцией done.

  .then(function(existingFriend) { 

       if(existingFriend === null) { 
        friends.push({ 
         'details': { 
          'phoneNumber': phonenum 
         } 
        }); 
       } else { 

        friends.push({'details': existingFriend}); 
       } 

      }) 
      .catch(function(err) { 
       console.log('err', err) 
       friends.push({ 
        'details': { 
         'phoneNumber': phonenum 
        } 
       }); 
      }) 
      .done(function() { 
       callback(); 
      }); 
+0

Можете ли вы разместить образец кода, пожалуйста, – AAA

+0

@AAA Я разместил код, который делает то, что я пытался описать. –

+0

Спасибо !!! Вы просто спасли меня много времени :) – AAA

Смежные вопросы