Я создаю создание демонстрационного приложения для книжного магазина в Node.js. Я столкнулся с небольшой ситуацией с запросом POST для создания жанра. Я настроил так, чтобы имя жанра требовалось, если не вставлять его в базу данных. Но когда я использую Почтальон для POST к URL-адресу локального хоста: 3000/API/жанров с JSONНе удалось выполнить проверку nodejs обязательное поле
{
"name": "TEST"
}
Он выдает ошибку
{
"error": "Genre validation failed"
}
Когда я извлекаю нужное поле в genreSchema он работает, но название жанра не отображается. Вот мой код
Код:
genre.js
var mongoose = require("mongoose");
// Create a schema for genre
var Schema = mongoose.Schema;
var genreSchema = Schema({
name:{
type: String,
required: true
},
create_date:{
type: Date,
default: Date.now
}
});
var Genre = module.exports = mongoose.model("Genre", genreSchema);
// Methods
// get genres
module.exports.getGenres = function(callback, limit) {
Genre.find(callback).limit(limit);
};
// add a new genre
// TODO: Not working in Postman ValidationError
module.exports.addGenre = function(genre, callback) {
Genre.create(genre, callback);
};
app.js
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var mongoose = require("mongoose");
var Genre = require('./models/genre');
var Book = require('./models/book');
// Connect to mongoose
mongoose.connect("mongodb://localhost/bookstore");
var db = mongoose.connection;
app.get("/", function(req, res){
res.json({ error: "Please use /api/books or /api/genres" });
});
// GET /api/genres
app.get('/api/genres', function(req, res){
Genre.getGenres(function(err, genres){
if(err) {
res.json({error: err.message})
}
res.json(genres);
});
});
app.post('/api/genres', function(req, res){
var genre = req.body;
Genre.addGenre(genre, function(err, genre){
if(err) {
res.json({
error: err.message
})
}
res.json(genre);
});
});
// GET /api/books
app.get('/api/books', function(req, res){
Book.getBooks(function(err, books){
if(err) {
res.json({error: err.stack})
}
res.json(books);
});
});
// GET /api/book/:id
app.get('/api/book/:_id', function(req, res){
Book.getBookById(req.params._id, function(err, book){
if(err) {
res.json({error: err.message})
}
res.json(book);
});
});
app.listen(3000, function(){
console.log("Running on port 3000!")
});
Какова ценность 'жанра' в' Genre.addGenre'? Вы уверены, что получаете правильные значения? – QoP
Подождите, я думаю, что забыл разобрать мой JSON – Ethan
Проблема была в том, что я не разбирал входящий json с модулем body-parser: P Stupid me. Я знал, что все правильно. – Ethan