返回回调值给main函数

return callback value to main function

本文关键字:main 函数 回调 返回      更新时间:2023-09-26

这是我的代码。请帮帮我。从回调函数返回预算值。

如何返回值main函数

    //Метод возвращает текущий бюджет пользователя
    getCurrentBudget: function (req) {
        var reqToken = req.headers["authorization"].substr(7);
        var is = true;
        jwt.verify(reqToken, config['jwt'], function (error, user) {
            // Если бюджет текущего пользователя
            if (user.currentBudget) {
                db.budget.findOne({ownerId: objectId(user._id)}, function(error, budget) {
                    if (!error && budget) {
                        //Бюджет найден
                        logger.debug('Бюджет найден: %j', budget, {});
                        return budget;
                    }
                })
            } else {
                // Ищем бюджет в который пригласили этого пользователя
                db.budget.findOne({membersEmail: user.email}, function(error, budget) {
                    if (!error && budget) {
                        //Бюджет найден
                        logger.debug('Бюджет найден: %j', budget, {});
                        return budget;
                    }
                })
            }
        });
    },

因为从函数调用异步代码,所以需要提供回调以"返回"结果。例如:

getCurrentBudget: function (req, callback) {
    var reqToken = req.headers["authorization"].substr(7);
    var is = true;
    jwt.verify(reqToken, config['jwt'], function (error, user) {
        // Если бюджет текущего пользователя
        if (user.currentBudget) {
            db.budget.findOne({ownerId: objectId(user._id)}, function(error, budget) {
                if (!error && budget) {
                    //Бюджет найден
                    logger.debug('Бюджет найден: %j', budget, {});
                    callback(budget);
                }
            })
        } else {
            // Ищем бюджет в который пригласили этого пользователя
            db.budget.findOne({membersEmail: user.email}, function(error, budget) {
                if (!error && budget) {
                    //Бюджет найден
                    logger.debug('Бюджет найден: %j', budget, {});
                    callback(budget);
                }
            })
        }
    });
},

试试这个:

getCurrentBudget: function (req, callback) { // callback is a function to get budget
    var reqToken = req.headers["authorization"].substr(7);
    var is = true;
    jwt.verify(reqToken, config['jwt'], function (error, user) {
        // Если бюджет текущего пользователя
        if (user.currentBudget) {
            db.budget.findOne({ownerId: objectId(user._id)}, function(error, budget) {
                if (!error && budget) {
                    //Бюджет найден
                    logger.debug('Бюджет найден: %j', budget, {});
                    callback(budget);
                }
            })
        } else {
            // Ищем бюджет в который пригласили этого пользователя
            db.budget.findOne({membersEmail: user.email}, function(error, budget) {
                if (!error && budget) {
                    //Бюджет найден
                    logger.debug('Бюджет найден: %j', budget, {});
                    callback(budget);
                }
            })
        }
    });
}

在main中,你这样调用这个方法:

main函数(){

  getCurrentBudget(req, function(budget) { // this function is your callback actually
     console.log(budget);
  });
}