Использование только одного API, если у другого нет данных - PullRequest
0 голосов
/ 31 августа 2018
const getUser = async (user) => {
    const body = await snekfetch.get('https://www.website.com/api/public/users?name=' + user);
    const userInfo = JSON.parse(body.text);
    const r = await snekfetch.get('https://www.website.com/api/public/users/' + userInfo.uniqueId + '/profile');
    const extraUserInfo = JSON.parse(r.text);
    const _message = await client.users.get('437502925019807744').send({ files: ['https://www.website.nl/avatar-imaging/avatarimage?figure=h' + userInfo.figureString + '.png'] });
    const avatarImage = _message.attachments.first().url;
    return { userInfo, extraUserInfo, avatarImage };
};

getUser(args[0]).then((result) => {
    message.channel.send(`${result.userInfo.name}`);
}).catch(function(result) {
    console.log(result.userInfo.name);
});

Здесь я пытаюсь использовать 3 API, однако это всегда идет к улову, даже если один существует, а другой нет, я пытался использовать result.userInfo.name только для использования первого API, также в улове, который я используйте первое, затем я попробовал имя, которое имеет только первый API, но не второй, однако я все еще получаю: TypeError: Cannot read property 'name' of undefined, поскольку он также смотрит на второй API, что еще я могу сделать, чтобы справиться с этой ситуацией? В общем, как я могу ловить только ошибки для первого API

изменить: я также пытался:

    if (extraUserInfo.user.name) {return { userInfo, extraUserInfo, avatarImage };}
    else {return { userInfo, avatarImage };}

1 Ответ

0 голосов
/ 31 августа 2018

Исправлено с помощью попытки поймать

try {
    const r = await snekfetch.get('https://www.website.com/api/public/users/' + userInfo.uniqueId + '/profile');
    const extraUserInfo = JSON.parse(r.text);
    return {
        userInfo,
        extraUserInfo,
        avatarImage
    };
} catch (error) {
    const extraUserInfo = {
        'error': 'not-found'
    };
    return {
        userInfo,
        extraUserInfo,
        avatarImage
    };
}
};
getUser(args[0]).then((result) => {
    console.log(result.extraUserInfo.error === 'not-found' ? result.userInfo.name : result.extraUserInfo.user.name);
}).catch((error) => {
    console.log(error);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...