Estoy haciendo un proyecto para la escuela, necesito crear una API Rest para un blog con Node.js. Los usuarios pueden publicar artículos y publicar comentarios relacionados con estos artículos. Para este proyecto estoy usando Sequelize y Express.
En mi tabla de " comentarios ", hay una columna de " artículo " que contiene el título del artículo donde se publicaron los comentarios. Así que estoy usando una URL como la siguiente para obtener la identificación del artículo y luego el título: /articles/:id/comments
La forma en que quería que fuera la estructura del enrutador es la siguiente:
POST localhost/articles/:id/commentsGET localhost/articles/:id/commentsGET localhost/articles/comments El problema es que cuando realizo una solicitud GET localhost/articles/comments , el enrutador activa esta parte del código que conduce a Sequelize BAD_FIELD_ERROR:
archivo: rutas/artículo.js
router.get("/:id", (req, res) => { const id = parseInt(req.params.id); Article.findByPk(id).then((article) => { if (!article) res.sendStatus(404); else res.json(article); }); });En lugar de esta parte:
archivo: rutas/artículo.js
router.get("/comments", (req, res) => { const Query = req.query; Comment.findAll({ where: Query }).then((comments) => res.json(comments)) });Este es el archivo server.js :
const express = require("express"); const securityRouter = require("./routes/security"); const userRouter = require("./routes/user"); const articleRouter = require("./routes/article"); const verifyWebToken = require("./middleware/verifyWebToken"); const app = express(); const connection = require("./lib/db"); connection.sync(); app.use(express.json()); app.use("", securityRouter); app.use("/users", userRouter); app.use("/articles", verifyWebToken, articleRouter); app.listen(3000, () => console.log("Server is listening."));