Ajuda (Help!)! Pesquisa no Banco de Dados MongoDB não retorna o esperado!
Bom, estou tentando criar um método para resolver o seguinte problema: Consultar um Post no banco de dados com base em uma palavra-chave que está no atributo description em um objeto post, mas invés de retornar apenas o objeto em questão, a consulta está retornando todo o banco. O Banco de dados utilizado é o MongoDB.
O projeto está dividido em Routes, Controller e Model.
E em Routes está:
app.get("/posts/?keywords", findDescriptionPost);
Em Controller está:
export async function findDescriptionPost(req, res) { const keywords = req.query.keywords; const foundPost = posts.filter(post => post.description.toLowerCase().includes(keywords.toLowerCase())); res.json(keywords) res.status(200).json(foundPost); }
E em Model está:
export async function findPost(keywords) { const db = connection.db("dataBasePosts"); const postsCollection = db.collection("posts"); const searchTerms = keywords .split(" ") .map((keyword) => new RegExp(keyword, "i")); return postsCollection .find({ $or: searchTerms.map(term => ({ description: term }))}) .toArray(); }
Sobre o Banco de dados, utilizando o MongoDB, este contém apenas uma coleção chamado Posts e está com os dados:
"_id": "6740d429ba124f8fccbfc84b",
"description": "A cena retrata um gato de pêlo marrom e tigrado usando um avental laranja e cozinhando um peixe em uma frigideira numa cozinha rústica de madeira. O gato está em pé na frente de um fogão a gás, segurando a frigideira com as duas patas dianteiras. O peixe parece estar fritando em óleo ou manteiga. Na bancada de madeira, há um pote de batatas e um recipiente de tomates. Uma janela de madeira emoldurada com uma vista borrada de vegetação pode ser vista ao fundo. A iluminação é suave e difusa, criando um ambiente aconchegante e doméstico. A ação principal é o gato cozinhando o peixe.",
"imageUrl": "http://localhost:3000/6740d429ba124f8fccbfc84b.png",
"imageAlternative": "Gato cozinhando `Peixe"
},
{
"_id": "6740de4d8a765dd375d1eb9a",
"description": "A cena mostra um gato de pêlo marrom e listrado usando um avental e misturando ovos em uma tigela de vidro com um batedor. O gato está em uma cozinha elegante com uma bancada preta. Um omelete já pronto está em uma frigideira na bancada, ao lado de uma tigela de ovos e um ramo de alecrim em uma tábua de madeira. A ação principal é o gato preparando os ovos.",
"imageUrl": "http://localhost:3000/6740de4d8a765dd375d1eb9a.png",
"imageAlternative": "Gato cozinhando Omelete by Gemini"
},
{
"_id": "674122fca738e4b6b03911dd",
"description": "A cena se passa em um ringue de boxe. O personagem principal é um gato preto antropomórfico, com músculos definidos e vestindo luvas de boxe e calção de luta com o logotipo “FIDER” visível. O gato está em uma pose de chute alto, sua perna direita estendida em um movimento rápido e poderoso. Sua expressão é séria e concentrada. As luvas têm cores branco, azul e vermelho. O fundo é escuro e desfocado, com uma multidão visível na distância, indicando que uma luta está acontecendo. Há faíscas ao redor do gato, adicionando um efeito dramático.",
"imageUrl": "http://localhost:3000/674122fca738e4b6b03911dd.png",
"imageAlternative": "Gato lutando MMA"
},
{
"_id": "67412376a738e4b6b03911de",
"description": "A cena se passa em um canteiro de obras ao ar livre. O personagem principal é um gato malhado usando um capacete de construção amarelo. O gato está caminhando sobre uma viga de madeira. No fundo, há outros materiais de construção, incluindo o que parece ser uma estrutura de construção em construção. A ação principal é o gato caminhando pelo canteiro de obras, usando seu capacete de segurança.",
"imageUrl": "http://localhost:3000/67412376a738e4b6b03911de.png",
"imageAlternative": "Gato trabalhando na Obra"
}
O teste para a requisição está sendo feito com o Postman e a requisição HTTP é: http://127.0.0.1:3000/posts/?keywords=Peixe
Para esta requisição, com base nos dados do Banco, o retorno deveria ser:
"_id": "6740d429ba124f8fccbfc84b",
"description": "A cena retrata um gato de pêlo marrom e tigrado usando um avental laranja e cozinhando um peixe em uma frigideira numa cozinha rústica de madeira. O gato está em pé na frente de um fogão a gás, segurando a frigideira com as duas patas dianteiras. O peixe parece estar fritando em óleo ou manteiga. Na bancada de madeira, há um pote de batatas e um recipiente de tomates. Uma janela de madeira emoldurada com uma vista borrada de vegetação pode ser vista ao fundo. A iluminação é suave e difusa, criando um ambiente aconchegante e doméstico. A ação principal é o gato cozinhando o peixe.",
"imageUrl": "http://localhost:3000/6740d429ba124f8fccbfc84b.png",
"imageAlternative": "Gato cozinhando `Peixe"
}
Mas o retorno é todo o banco ao invés de apenas o Objeto que estou buscando. Estou há alguns dias queimando neurônios sem sucesso, e ficaria muito grato caso alguém mostre-me uma luz!