Мне поручено создать приложение для веб-страницы, которое может редактировать или удалять песни из моей базы данных Монго.У меня работает метод удаления, однако, как только я редактирую песню и пытаюсь сохранить изменения, мой запрос 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