Мой код находит subreddit и возвращает 25 новых комментариев в формате JSON. Затем я преобразую его в строку и склеиваю по пробелам, одновременно удаляя специальные символы. Затем я создаю словарь, который считает частоту слов в каждом комментарии. Затем я отправляю словарь в мою базу данных.
Проблема в том, что я хочу разбить объекты и сделать каждое слово входным или объединить все объекты в один и суммировать частоту повторяющихся ключей.
Вот попытка перебрать ключи:
function insertData() {
let words = new Array();
let commentlist = r.getSubreddit('').getNewComments();
let cleanData = async() => {
let result = await (commentlist);
return result;
};
cleanData().then(function(result) {
for (i = 0; i <= result.length - 1; i++) {
let currentData = JSON.stringify(result[i].body).split(' ');
for (j = 0; j <= currentData.length; j++) {
if (currentData[j] != undefined) {
words.push(currentData[j]);
}
}
}
for (i = 0; i <= words.length - 1; i++) {
words[i] = words[i].replace(/[?.,"'\/#!$%\^&\*;:{}=\-_`~()]/g, "", '');
words[i] = words[i].replace(/\s{2,}/g, " ");
words[i] = words[i].replace(/[0-9]/g, " ");
}
}).then(() => {
var wordsMap = {};
words.forEach(function(key) {
if (wordsMap.hasOwnProperty(key)) {
wordsMap[key]++;
} else {
wordsMap[key] = 1;
}
});
words = wordsMap;
console.log(words);
MongoClient.connect(process.env.MONGODB_URI || process.env.DB_CONNECTION, {
useUnifiedTopology: true,
useNewUrlParser: true
}, function(err, db) {
if (err) throw err;
const dbo = db.db("d");
const messageTable = dbo.collection("x");
for (var key in words) {
messageTable.insertOne(words[key], function(err, res) {
if (err) throw err;
console.log("documents inserted");
});
}
})
});
}
Но я получаю ошибку до последнего для l oop, даже если я удаляю все числа из моих ключей. Ошибка:
TypeError: Невозможно создать свойство '_id' для числа '1'
Теперь мой вопрос заключается в том, было бы проще объединить объекты в моей базе данных и сортировать их по частоте или разделить их до или после добавления их в мою базу данных. Как бы я сделал это, откуда я?