Я новичок в node.js и пытаюсь сделать успокаивающий API поваренной книги, используя nodejs. Так что есть список и рецепты, которые должны быть в указанном списке, выбранном по идентификатору. Я пытаюсь получить listId
в качестве параметров, но получил undefined
значение. Почтальон показывает ошибку:
{"errors": {"_listId": {"message": "Путь _listId
требуется.", "Name": "ValidatorError", "properties ": {" message ":" Путь _listId
обязательно. "," тип ":" обязательно "," путь ":" _listId "}," kind ":" обязательно "," путь ":" _listId "} }, "_message": "Ошибка проверки рецепта", "message": "Ошибка проверки рецепта: _listId: путь _listId
требуется.", "name": "Ошибка Validation"}
Итак вот:
//Recipe model:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const RecipeSchema = new Schema({
title: {
type: String,
required: true,
minLength: 1,
trim: true
},
_listId: {
type: mongoose.Types.ObjectId,
required: true
}
});
module.exports = mongoose.model('Recipe', RecipeSchema);
Маршруты рецептов:
const express = require('express');
const controller = require('../controllers/recipes');
const router = express.Router();
router.get('/' , controller.get);
router.post('/' , controller.post);
router.patch('/:id' , controller.update);
router.delete('/:id' , controller.delete);
module.exports = router;
Контроллер рецептов:
const Recipe = require('../models/recipe.model');
//get all recipes from specific list
module.exports.get = (req, res) => {
Recipe.find({
_listId: req.params.listId
}).then((tasks) => {
res.send(tasks);
});
console.log(req.params.listId); //undefined
};
//create new recipes in the list specified by id
module.exports.post = (req, res) => {
let newRecipe = new Recipe({
title: req.body.title,
_listId: req.params.listId
});
console.log(req.params.listId); //undefined
newRecipe.save().then((newRecipeDoc) => {
res.send(newRecipeDoc);
}).catch((e) => {
res.send(e)
});
};
и файл приложения. js, где я настраиваю маршрут
const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const listRoutes = require('./routes/list');
const recipeRoutes = require('./routes/recipe');
const keys = require('./config/keys');
const app = express();
mongoose.connect(keys.mongoURI, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => console.log('MongoDB connected'))
.catch(error => console.log(error));
app.use(bodyParser.json());
app.use('/lists', listRoutes);
app.use('/lists/:listId/recipes', recipeRoutes);
module.exports = app;
Запросы get / post для List работают нормально, но для Recipe у меня есть undefined
значение