Я получаю массив объектов из вызова API, а затем фильтрую значения в зависимости от двух ключей: story_title
и title
. Если оба значения равны нулю, объект фильтруется. Затем я перебираю отфильтрованный массив объектов, чтобы сохранить определенные данные в фильтре mongodb (используя mongoose). Проблема в том, что я хочу сохранить документ с одним ключом title
, поэтому я создал функцию, которая проверяет, является ли story_title
или title
нулевым, и возвращает ненулевое значение.
Функция не работает должным образом, потому что функция в title
внутри цикла for
возвращает некоторые значения null
.
function pickTitle(title, story_title) {
if (!story_title) {
return story_title;
} else {
return title
}
}
everyHour: async () => {
try {
data = await axios.get(url);
let posts = data.data.hits;
const filteredPosts = await posts.filter((elem) => {
return (!elem.title || !elem.story_title)
});
for (let filtered of filteredPosts) {
Post.updateOne({
_id: filtered.objectID,
author: filtered.author,
title: await pickTitle(filtered.title, filtered.story_title),
created_at: filtered.created_at,
},
{$setOnInsert: filtered},
{upsert: true},
function(err, numAffected) {
if (err) {
//console.log("err")
} else {
//console.log(numAffected)
}
})
.then(res => {
//console.log(res)
})
.catch(err => {
//console.log(err)
});
}
} catch(error) {
console.log(error);
}
}