Я пытаюсь удалить свой пост с Ajax, Node и Express, но по неизвестной причине он не работает. Первоначально он работал, когда все мои коды были в файле index. js. но после разделения их на Модель и маршруты он внезапно перестал находить маршрут или что-то еще, что может быть проблемой.
У меня есть это в моем приложении. js file
if (process.env.NODE_ENV !== 'production') {
const dotenv = require('dotenv').config();
}
var createError = require('http-errors');
var express = require('express');
var expressLayouts = require('express-ejs-layouts');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var passport = require('passport');
var expressValidator = require('express-validator');
const check = require('express-validator/check').check;
const validationResult = require('express-
validator/check').validationResult;
var LocalStrategy = require('passport-local').Strategy;
var multer = require('multer');
// handle file uploads
var upload = multer({dest: './uploads'});
var flash = require('connect-flash');
var bcrypt = require('bcryptjs');
const methodOverride = require('method-override');
var mongoose = require('mongoose');
var indexRouter = require('./routes/index');
var postRouter = require('./routes/posts');
var commentRouter = require('./routes/comments');
var usersRouter = require('./routes/users');
mongoose.connect(process.env.DATABASE_URL, {
useNewUrlParser: true,
useUnifiedTopology: true
});
const db = mongoose.connection
db.on('error', error => console.log(error))
db.once('open', () => console.log('connectd to Mongoose'))
var app = express();
app.use(require('connect-flash')());
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(expressLayouts);
app.use(express.static('./uploads'));
app.use(flash());
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static('public'))
// app.use(express.static(path.join(__dirname, 'public')));
// Handle Session
app.use(session({
secret:'secrect',
saveUninitialized: true,
resave: true
}));
//Passport
app.use(passport.initialize());
app.use(passport.session());
//Validator
app.use(expressValidator({
errorFormatter: function(param, msg, value){
var namespace = param.split('.')
, root = namespace.shift()
, formParam = root;
while(namespace.length) {
formParam += '[' + namespace.shift()
}
return{
param: formParam,
msg: msg,
value: value
};
}
}));
app.use(function (req, res, next) {
res.locals.messages = require('express-messages')(req, res);
next();
});
app.get('*', function(req, res, next) {
res.locals.user = req.user || null;
next();
});
app.use(methodOverride('_method'));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/posts', postRouter);
app.use('', commentRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err :
{};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
и это мой routes/posts.js
файл
router.delete( '/:id', function( req, res ){
const ObjectId = mongoose.Types.ObjectId;
let query = {_id:new ObjectId(req.params.id)}
Post.deleteOne(query, function(err) {
if(err){
console.log(err);
}
res.send('Success');
});
})
мой main.js
файл
$(document).ready(function() {
$('.delete-article').on('click', function(e) {
const $target = $(e.target);
const id = $target.attr('data-id');
$.ajax({
type: 'DELETE',
url: '/posts/'+id,
success: function(response) {
window.location.href='/posts';
},
error: function(err){
console.log(err);
}
});
});
});
и это моя ссылка
<li><a class="delete-article" href="#" data-id="<%=post.id%>">Delete</a></li>
и это сообщение об ошибке я Я получаю из консоли браузера
DELETE http://localhost:3000/posts/5e851f8fbdfbfa6b3c140e52 404 (Not Found)
Сетевой код
Status Code: 404 Not Found
У меня нет хороших знаний Node и Ajax, если кто-то может мне помочь, а также объяснить это лучше для Я понимаю, я буду очень признателен. Спасибо.