Как я могу исправить мой метод updateSong, который застревает на (ожидающем) статусе и в конечном счете терпит неудачу - PullRequest
0 голосов
/ 26 марта 2019

Мне поручено создать приложение для веб-страницы, которое может редактировать или удалять песни из моей базы данных Монго.У меня работает метод удаления, однако, как только я редактирую песню и пытаюсь сохранить изменения, мой запрос PUT застревает в состоянии (в ожидании) и в конечном итоге терпит неудачу.

Мой код rout.js:

const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const SongsController = require('../api/songs');

const SongSchema = new mongoose.Schema({
  title: String,
  artist: String,
  year: Number,
  genre: String,
  lyrics: String
});

const Song = mongoose.model('song', SongSchema);

module.exports = (app) => {
...
  app.put('/api/songs/:id', function (req, res) {
    var id = req.params.id;
    var song = Song.findByIdAndUpdate(id, function(err, song){
    try {
      if(!song) {
        return res.status(404).send({
          message: "Song not found",
          params: req.params
        });
      }
      //song = Song.update(song, req.body);
      res.json(song);
    } catch(error) {
      res.status(500).send({
        message: error.message
      });
    }
    });
  });
...
  app.use(bodyParser.urlencoded({extended: false}));
};

Код моего router.js:

var song = require('../api/songs');
module.exports = function(router) {
        router.route('/songs').post(function(req, res) { console.log(req.body); song.addSong(req,res); })
                              .get(function(req,res) { song.getAllSongs(req,res) });
                              .get(function(req,res,next) { song.findByLyrics(req,res,next) });
        router.route('*').get(function(req, res) {
                              res.sendfile('./html/home.html'); });
        router.route('/api/songs/:id')
                              .get((req, res) => { songs.findById(req, res); })
                              .put((req, res) => {songs.update(req, res)})
                              .delete((req, res) => { songs.deleteSong(req, res); })
};

Код моей song.js:

var Song = require('../models/song');
...
module.exports.updateSong = function(req, res) {
        var query = {_id: id};
        Song.findByIdAndUpdate(query, {$set: req.body.song}, function(err, song) {
            if (err) {
              return  res.send(err);
            };
            res.json({song: song});
        });
};

Ссылка на ответ: https://i.imgur.com/T1Tt2qj.png

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...