I am a beginner and practising writing some API routes to a MySQL database. My database is being updated successfully using both the form on my application and in Postman. When I use the MySQL interface, ‘select * from moods;’ works and returns the tables, but my GET request is just returning an empty array (in POSTMAN and frontend) and giving the 200 OK code.
router.get("/", async function(req, res) {
// Fetch all emotrack entries from the database
try {
let results = await db(`SELECT * FROM moods;`);
if (results.data.length === 0) {
console.log("no data found in moods")
}
res.status(200).send(results.data);
console.log(results)
} catch(err) {
console.error('Database query failed:', err); // Log the error for debugging
res.status(500).send({ error: 'Internal Server Error', details: err.message });
}
});
// getting 'no data found in moods' logged on the console
router.post("/", async (req, res) => {
try {
const text = req.body;
const sql = `INSERT INTO moods (mood, intensity, triggers) VALUES('${text.mood}', '${text.intensity}', '${text.triggers};');`;
await db(sql);
const result = await db("SELECT * FROM moods;");
res.status(201).send(result.data);
console.log(result.data)
} catch (e) {
res.status(500).send(e);
}
});
// this works fine
My course that I did wrote us a db() function to use MySQL and I know that this is working as it works fine with my POST request so I don’t think it would be that. I do know that I just updated from MySQL -> MySQL2 so I’m not sure if that changes anything here?
Darcy Newmark is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
1