Fix: Search matching with favorites

master
masterhc 12 months ago
parent ac97bb3731
commit 3c0ea00afe

@ -23,26 +23,21 @@ exports.search = async (req, res)=>
var data = await new Search(req.body.searchstring).searchExtraInfo(); var data = await new Search(req.body.searchstring).searchExtraInfo();
if(!Array.isArray(data)) return res.sendStatus(404); if(!Array.isArray(data)) return res.sendStatus(404);
const favorites = await FavoriteModel.find() const favorites = await FavoriteModel.find()
const favoriteScanlators = favorites.map(favorite => favorite.scanlator); const favoriteScanlators = [...new Set(favorites.map(favorite => favorite.scanlator))];
data.forEach((item, index) => for(let i = 0; i<data.length; i++)
{ {
if (favoriteScanlators.includes(item.scanlator)) for(let j= 0; j < data[i].Results.length; j++)
{ {
item.Results.find(result => const scanlator = data[i].scanlator;
if(!favoriteScanlators.includes(scanlator)) continue
let item = data[i].Results[j];
const matchingFavorite = favorites.find(fav=>
{ {
const matchingFavorite = favorites.find(favorite => return item.title === fav.title && scanlator === fav.scanlator;
{ })
return result.title === favorite.title && item.scanlator === favorite.scanlator; if(matchingFavorite) data[i].Results[j].favorite = matchingFavorite._id;
});
if (matchingFavorite)
{
result.favorite = matchingFavorite._id;
return true;
}
return false;
});
} }
}); }
data = data.filter(item => item.Results.length > 0) data = data.filter(item => item.Results.length > 0)
data.sort((a,b)=> data.sort((a,b)=>
{ {
@ -50,6 +45,7 @@ exports.search = async (req, res)=>
const scanlatorB = b.scanlator.toLowerCase(); const scanlatorB = b.scanlator.toLowerCase();
return scanlatorA.localeCompare(scanlatorB); return scanlatorA.localeCompare(scanlatorB);
}) })
console.log(data[1].Results)
res.render('searchResults.ejs', {data}) res.render('searchResults.ejs', {data})
} }

Loading…
Cancel
Save