Я делаю http-запрос, используя библиотеку узлов response
, и пытаюсь вызвать его рекурсивно (если пользователь сделал фиксацию в один день, проверьте предыдущий день. Если нет, подсчитайте все дни, чтобы получить полосу).
Проблема в том, что линия
const githubResponse = await request(options);
Выдает ошибку
Unexpected token o in JSON at position 1
await request(options)
, похоже, не возвращает ответ JSON GitHub API, который я ожидаю, но вместо этого githubResponse
кажется объектом, который я не могу использовать. Я предполагаю, что неправильно использую async/await
, но не знаю, как это исправить.
async function checkUserCommitForDate(user, date) {
const options = {
url: `https://api.github.com/search/commits?q=author:${user}+author-date:${date}`,
headers: {
'User-Agent': 'request',
'Accept': 'application/vnd.github.cloak-preview'
}
};
const githubResponse = await request(options)
// I get an error on the next line
if (JSON.parse(githubResponse).total_count > 0) {
const previousDaysDate = moment(date).subtract(1, 'day').format('YYYY-MM-DD');
let streakCounter = await checkUserCommitForDate(user, previousDaysDate);
streakCounter++;
console.log('streakCounter', streakCounter);
return streakCounter;
} else {
return 0;
}
}
ОБНОВЛЕНИЕ: похоже, это не обещание, поэтому мне нужно отформатировать это по-другому (как обратный вызов). Когда я пытаюсь это:
async function checkUserCommitForDate(user, date) {
const options = {
url: `https://api.github.com/search/commits?q=author:${user}+author-date:${date}`,
headers: {
'User-Agent': 'request',
'Accept': 'application/vnd.github.cloak-preview'
}
};
request(options, async function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
if (JSON.parse(body).total_count > 0) {
const previousDaysDate = moment(date).subtract(1, 'day').format('YYYY-MM-DD');
let streakCounter = await checkUserCommitForDate(user, previousDaysDate);
streakCounter++;
console.log('streakCounter', streakCounter);
return streakCounter;
} else {
return 0;
}
});
}
Линия
let streakCounter = await checkUserCommitForDate(user, previousDaysDate);
становится проблемой, поскольку streakCounter
не определено, что делает журнал NaN
.
request
, а неresponse
? Если это так, он не возвращает обещание, а использует обратный вызов. - person alexmac   schedule 21.10.2017request-promise
вместоrequest
. - person Bergi   schedule 21.10.2017