Очистка данных Reddit с помощью axios и pushshift (ошибка: UnhandledPromiseRejectionWarning) - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь получить данные Reddit, используя API pushshift и JavaScript-библиотеку axios.Я получаю сообщение об ошибке:

UnhandledPromiseRejectionWarning: необработанное отклонение обещания.Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(код отклонения: 6)

Ниже приведен код (к вашему сведению, используя существующий код другого человека, просто пытаясь понять, как работать с данными Reddit).Я подумал, включив функцию .catch внизу, чтобы все работало.Ценю любые предложения.

const axios = require("axios");
const axiosRetry = require("axios-retry");
const moment = require("moment");
const _ = require("lodash");
const Comment = require("Comment.js");

let startDate = new Date("Jan 1, 2015 00:00:00").getTime();
const endDate = new Date("July 27, 2018").getTime();
const limit = 50;

axiosRetry(axios, { retries: 3 });

// pushshift does not use milliseconds and date does, which is accounted for in substr & 1000
const fetchComments = async (startDate, limit) => {
    console.log('initiating comment fetch from ${startDate} to ${endDate}');

    while (startDate < endDate) {

        //get the first limit comments after startDate
        const response = await axios.get('https://apiv2.pushshift.io/reddit/search/comment/?q=elon%20musk&size=${limit}&after=${startDate.toString().substr(0, 10)}&before=${endDate.toString().substr(0, 10)}');

        const comments = response.data.data;

        // prep comments for db
        const commentDocuments = comments.map(comment => {
            return {
                commentDate: moment.unix(comment.created_utc).format("MM/DD/YYYY"),
                subreddit: comment.subreddit,
                body: comment.body,
                score: comment.score,
            };
        });

        console.log('insert (${new Date(_.first(comments).created_utc * 1000)} -> ${new Date(_.last(comments).created_utc * 1000)})');

        await Comment.insertMany(commentDocuments).catch(e => console.log(e));

        startDate = _.last(comments).created_utc * 1000;

    }
};

fetchComments(startDate, limit);
...