Skip to content

Conversation

@Anna2024WebDev
Copy link

Comment on lines +69 to +103
app.get("/", (request, response) => {
const endpoints = listEndpoints(app); // Fetch all available routes
response.json({
message:
"Miao Miao! Welcome to the Cats Mongo API! Here you can find all types of cats. Below are the available endpoints",
endpoints: endpoints, // Send the list of endpoints as JSON
});
});

app.get("/cats", async (request, response) => {
const { personality, fur_length, commonality, breed } = request.query;

// Build the query object based on provided parameters
const query = {};

// If no query parameters are provided, return all cats
if (personality) query.personality = { $regex: new RegExp(personality, "i") }; // Case-insensitive search
if (fur_length) query.fur_length = { $regex: new RegExp(fur_length, "i") };
if (commonality) query.commonality = { $regex: new RegExp(commonality, "i") };
if (breed) query.breed = { $regex: new RegExp(breed, "i") };

try {
// Query the MongoDB 'Cat' collection
const matchingCats = await Cat.find(query);

if (matchingCats.length > 0) {
response.json(matchingCats); // Return the matching cats
} else {
response.status(404).send("No cats found with the specified criteria");
}
} catch (error) {
console.error("Error fetching cats:", error);
response.status(500).send("Server error occurred");
}
});
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well done query-building 💯


try {
// Query MongoDB for the cat with the given custom 'id' field (cast to Number)
const cat = await Cat.findOne({ id: parseInt(id) }); // Convert the id to an integer
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Each instance gets its own mongoDB ID so we can use that

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants