Я следую этому учебному пособию MERN на Youtube.
Это ссылка на Github со всеми папками и кодом.
https://github.com/bradtraversy/mern_shopping_list
Пока что соединение с базой данных установлено, я могу делать запросы GET с почтальоном, но при попытке отправить запрос POST я получаю следующее сообщение об ошибке.
unhandledPromiseRejectionWarning - проверка элемента не удалась: имя: необходимо указать путь.
Соответствующий код: server.js
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const path = require('path');
const items = require('./routes/api/items');
const app = express();
app.use(bodyParser.json());
// DB Config
const db = require('./config/keys').mongoURI;
// Connect to Mongo
mongoose
.connect(db, {useNewUrlParser: true}) // Adding new mongo url parser
.then(() => console.log('MongoDB Connected...'))
.catch(err => console.log(err));
// Use Routes
app.use('/api/items', items);
// Serve static assets if in production
if (process.env.NODE_ENV === 'production') {
// Set static folder
app.use(express.static('client/build'));
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
}
const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`Server started on port ${port}`));
А это код для маршрутов, / routs / api / items
const express = require('express');
const router = express.Router();
// Item Model
const Item = require('../../models/Item');
// @route GET api/items
// @desc Get All Items
// @access Public
router.get('/', (req, res) => {
Item.find()
.sort({ date: -1 })
.then(items => res.json(items));
});
// @route POST api/items
// @desc Create An Item
// @access Public
router.post('/', (req, res) => {
const newItem = new Item({
name: req.body.name
});
newItem.save().then(item => res.json(item));
});
// @route DELETE api/items/:id
// @desc Delete A Item
// @access Public
router.delete('/:id', (req, res) => {
Item.findById(req.params.id)
.then(item => item.remove().then(() => res.json({ success: true })))
.catch(err => res.status(404).json({ success: false }));
});
module.exports = router;
Что здесь происходит, похоже, что в этой части есть ошибка:
router.post('/', (req, res) => {
const newItem = new Item({
name: req.body.name
});
Или путь / маршрутизация. Я в конце моего ума.
Я добавляю код Item.js здесь:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// Create Schema
const ItemSchema = new Schema({
name: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
}
});
module.exports = Item = mongoose.model('item', ItemSchema);