Захватить ответ JSON GET в переменную? - PullRequest
0 голосов
/ 27 ноября 2018

Я использую request-promise для получения данных от конечной точки, которая у меня есть.Можно ли «захватить» ответ json в переменной, чтобы использовать его где-нибудь?

try{
    var gamer = '';//variable to capture json data
    var options = {
        uri: 'http://localhost:4000/gamers/'+gamer._id+'/find',
        json: true
    };

    RequestPromise(options)
        .then(function (data) {
            gamer = data;//capturing response 
        })
        .catch(function (err) {
            console.log("Error saving player data !");
        });
    .... do something with gamer ....
}catch(err){
    res.status(500).send({
            message: err.message || 'An error occurred generating player teams !'
    });
}

Причина, по которой мне нужно это сделать, заключается в том, что на самом деле у меня нет доступа к базе данных, чтобы получить этоинформация, поэтому мой единственный вариант - использовать API для получения информации через идентификаторы коллекций.

1 Ответ

0 голосов
/ 27 ноября 2018

Ты уже много делаешь правильно.Проблема в том, что вашей переменной gamer будет присвоено значение, которое вы ожидаете первым, когда ваше обещание разрешится.Есть много способов сделать скин для этого кота, но для начала попробуйте выполнить все, что вы хотите выполнить для переменной gamer в .then(), например:

try{
    var gamer = '';//variable to capture json data
    var options = {
        uri: 'http://localhost:4000/gamers/'+gamer._id+'/find',
        json: true
    };

    RequestPromise(options)
        .then(function (data) {
            gamer = data;//capturing response 
            // here is the rigth place perofrm operations on the answer, as this part of the code gets executed after promise reolves. BTW. Then you don't need variable gamer.
        })
        .catch(function (err) {
            console.log("Error saving player data !");
        });
    // here is not the right place to do something with gamer as this is executed as soon as promise is initialized, not as it resolves. This means your variable will have initial value here
}catch(err){
    res.status(500).send({
            message: err.message || 'An error occurred generating player teams !'
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...