проблема при создании простого сервиса API в другом файле - PullRequest
0 голосов
/ 19 сентября 2019

Хочу создать простой RESTful сервис для управления списком жанров фильмов.Сначала я попытался обработать все HTTP-запросы к заданному маршруту ('/ api / genres') в одном файле (server.js), и мой код сработал, т.е. я смог публиковать фильмы, обновлять фильмы, когда обрабатывалмаршруты из основного файла server.js.Но затем я попытался обработать маршруты в отдельном файле, но у меня возникают проблемы.

Проблемы:

  1. Кажется, моя переменная фильмов из server.jsЯ не смог экспортировать себя, так как я получаю 'undefined' на console.log (movies) в generes.js.Так что для запроса post и put ничего не отображается

  2. Я читал, что 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";
}

the directory structure of my project

Также, когда я использовал app.get вместо router.get.Я получил следующую ошибку: error

...