Piszę prostą apke restową z użyciem nodejs i expressa, jako bazy danych używam mongoDB. Do requestów używam postmana. Problem w tym, że klikam POST i po jakiejś chwili wyskakuje mi error, że nie może dostać żadnej odpowiedzi. Server uruchamia się bez błędów, inne odpowiedzi działają. Oto kod w którym obsługuje POST. W czym problem? Używam mongoDB 4.0.4
routes: product.js
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const Product = require('../models/product');
router.get('/', (req, res, next) => {
res.status(200).json({
message: 'Handling GET requests to /products'
});
});
router.post('/', (req,res,next)=>{
const product = new Product({
_id: new mongoose.Types.ObjectId(),
name: req.body.name,
price: req.body.price
});
product.save().then(result =>{
console.log(result);
})
.catch(error => console.log(error));
res.status(201).json({
message: 'Handling POST requests to /products',
createdProduct: product
});
});
//dalej tylko obsluga patch/delete itd
model: product.js
const mongoose = require('mongoose');
const productSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: String,
price: Number
})
module.exports = mongoose.model('Product',productSchema);
app.js:
const express = require('express');
const app = express();
const morgan = require('morgan');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const productRoutes = require('./api/routes/products');
const orderRoutes = require('./api/routes/orders');
mongoose.connect('mongodb+srv://mojanazwa:[email protected]/test?authSource=test&w=1',{
useNewUrlParser: true
});
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParser.json());
app.use((req,res,next)=>{
res.header('Access-Control-Allow-Origin', "*");
res.header('Access-Control-Allow-Headers',
'Origin,X-Requested-With, Content-Type, Accept, Authorization');
if(req.method == 'OPTIONS'){
res.header('Access-Control-Allow-Methods', 'PUT, POST, PATCH, DELETE, GET');
return res.status(200).json({});
}
});
app.use('/products', productRoutes);
app.use('/orders', orderRoutes);
app.use((req,res,next)=>{
const error = new Error('Not found');
error.status(404);
next(error);
})
app.use((error,req,res,next)=>{
res.status(error.status || 500);
res.json({
error:{
message: error.message
}
});
});
module.exports = app;
Edit: Inne odpowiedzi typu GET itd też nie działają dając tę samą odpowiedź. Literówka