Я учусь использовать express сервер и RESTFUL маршруты. В настоящее время я не могу обновить свое сообщение в блоге, когда я нажимаю кнопку «Отправить» на странице редактирования, я перехожу к исходному сообщению, которое не редактируется, но когда я go перехожу на главную страницу, исходное сообщение не изменяется и появляется повторяющееся сообщение. с изменениями, которые я сделал с новым ._id. Я запускаю это в местной среде. База данных Mongodb с использованием Mon goose.
//app.js file
const express = require('express'),
app = express(),
bodyParser = require('body-parser'),
mongoose = require('mongoose'),
port = 3000;
const methodOverride = require('method-override');
////APP CONFIG
app.set('view engine', 'ejs');
app.use(express.static('public'));
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(methodOverride("_method"));
mongoose.connect('mongodb://localhost:27017/restful_blog', {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false
});
////MONGOOSE/MODEL/CONFIG
const blogSchema = new mongoose.Schema({
title: String,
image: String,
body: String,
created: {
type: Date,
default: Date.now
}
});
const Blog = mongoose.model('Blog', blogSchema);
////RESTFUL ROUTES
app.get('/', (req, res) => {
res.redirect('/blogs');
});
//Index Route
app.get('/blogs', (req, res) => {
Blog.find({}, (err, blogs) => {
if (err) {
console.log(err);
} else {
res.render('index', {
blogs: blogs
});
}
});
});
//New Route
app.get('/blogs/new', (req, res) => {
res.render('new');
});
//Create Route
app.post('/blogs', (req, res) => {
//Create Blog
Blog.create(req.body.blog, (err, newBlog) => {
if (err) {
res.render('new');
} else {
//Then, Redirect to Index
res.redirect('/blogs');
}
});
});
//Show Route
app.get('/blogs/:id', (req, res) => {
Blog.findById(req.params.id, (err, foundBlog) => {
if (err) {
res.redirect('/blogs');
} else {
res.render('show', {
blog: foundBlog
});
}
});
});
//Edit Route
app.get('/blogs/:id/edit', (req, res) => {
Blog.findById(req.params.id, (err, foundBlog) => {
if (err) {
res.redirect('/blogs');
} else {
res.render('edit', {
blog: foundBlog
});
}
});
});
//Update Route
app.put('/blogs/:id', (req, res) => {
Blog.findOneAndUpdate(req.body.id, req.body.blog, (err, updatedBlog) => {
if (err) {
res.redirect('/blogs');
} else {
res.redirect('/blogs/' + req.params.id);
}
});
});
////Starts Server
app.listen(port, () => console.log(
`YelpCamp is running at http://localhost:${port}`
));
//edit.js file
<%- include('partials/header') %>
<div class="ui main text container segment">
<div class="ui huge header">
Edit <%= blog.title %>
</div>
<form class='ui form' method="POST" action="/blogs/<%= blog._id %>?_method=PUT" >
<div class="field">
<label>Title</label>
<input class="ui input" type="text" name="blog[title]" value="<%= blog.title %>">
</div>
<div class="field">
<label>Image</label>
<input class="ui input" type="text" name="blog[image]" value='<%= blog.image %>'>
</div><div class="field">
<label>Blog Post</label>
<textarea name="blog[body]"><%= blog.body %></textarea>
</div>
<input class='ui basic button red big' type="submit">
</form>
</div>
<%- include('partials/footer') %>