javascript - 异步 Node JS : Error: Callback was already called

标签 javascript jquery node.js asynccallback

我是 node.js 的新手,我必须解决其中的一个错误。我正在尝试通过以下服务更新组成员,每当我尝试调用此 API 时,都会出现错误

Error: Callback was already called.

我的代码是:

'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');
    }

});


});

关于同样的问题,我看到的答案很少,但我仍然无法解决。

最佳答案

如果 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();
            });

关于javascript - 异步 Node JS : Error: Callback was already called,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30552376/

相关文章:

javascript - 在数字两边添加括号

javascript - react-native 如何在父组件内的特定位置显示多个组件?

javascript - 我来自 Node 的数据没有绑定(bind)到模板变量

javascript - 连接到 Mongoose 时帖子不起作用

javascript - 为什么我的 JavaScript 中会出现 “hover is not defined” 错误?

javascript - 使用javascript在div标签中附加表格

javascript - 多个 dropzone.js - 单页

jquery - 从移动网站 (jQuery mobile) 重定向到主网站样式徘徊

javascript - jQuery load() 函数不起作用

mysql - 使用 handle 访问 SQL 对象以在屏幕上呈现