Хочу создать простой RESTful сервис для управления списком жанров фильмов.Сначала я попытался обработать все HTTP-запросы к заданному маршруту ('/ api / genres') в одном файле (server.js), и мой код сработал, т.е. я смог публиковать фильмы, обновлять фильмы, когда обрабатывалмаршруты из основного файла server.js.Но затем я попытался обработать маршруты в отдельном файле, но у меня возникают проблемы.
Проблемы:
Кажется, моя переменная фильмов из server.jsЯ не смог экспортировать себя, так как я получаю 'undefined' на console.log (movies) в generes.js.Так что для запроса post и put ничего не отображается
Я читал, что router.get и app.get мало чем отличаются, но app.get не работает в жанрах.js
Server.js
const app = express();
const generes = require("./routes/api/genres");
app.use(express.json());
var movies = [
{
name: "harry potter",
genere: "fiction"
},
{
name: "IT",
genere: "horror"
},
{
name: "chicchore",
genere: "comedy"
},
{
name: "A walk to remember",
genere: "romantic"
}
];
app.use("/api/genres", generes);
const port = process.env.PORT || 3000;
app.listen(port, () => console.log("Server running..."));
module.exports.movies = movies;
genres.js
var express = require("express"),
app = express();
const server = require("../../server");
const router = express.Router();
app.use(express.json());
//importing movies array
var movies = server.movies;
router.get("/", (req, res) => {
res.send(movies);
});
router.post("/", (req, res) => {
var movie_obj = {
name: req.body.name,
genere: req.body.genere
};
movies.push(movie_obj);
res.send(movie_obj);
});
router.put("/:id", (req, res) => {
var flag = 0;
movies.forEach(ele => {
if (ele.name == req.params.id) {
ele.name = req.body.name;
flag = 1;
res.send(movies);
}
});
//if (flag == 0) res.send(`no such movie exists ${req.params.id}`);
});
module.exports = router;
function newFunction() {
return "movies";
}
Также, когда я использовал app.get вместо router.get.Я получил следующую ошибку: