Express дает одинаковый ответ даже с разными входными значениями в MongoDB - PullRequest
0 голосов
/ 22 марта 2020

Я новичок Express и MongoDB. Я иду по курсу Удеми и уверен, что мой код точно такой же.

Моя проблема:

Когда я публикую некоторые данные в MongoDB коллекция, она работает как положено. Но когда я пытаюсь добавить новое значение, оно работает, но вставляет то же значение, что и первое сообщение, даже если входные значения различны.

Вот мой код:

pacienteControllers. js

const Paciente = require('../models/Paciente');

exports.newClient = async (request, response, next) =>{
   const paciente = new Paciente(request.body);
   try {
      await paciente.save();
      response.json({mensaje: 'El cliente se agregó correctamente'});
   } catch (error) {
      console.log(error);
      next();
   }
}

маршруты / индексы. js:

const express = require('express');
const router = express.Router();
const PacienteController = require('../controllers/PacienteControllers');

module.exports = () =>{

   router.get('/', () =>{
      console.log("Petición enviada");
   })

   router.post('/pacientes',
      PacienteController.newClient
   )

   return router;
}

index. js:

const express = require('express');
const mongoose = require('mongoose');
const routes = require('./routes/index');
const bodyParser = require('body-parser');
const server = express();

mongoose.Promise = global.Promise;
mongoose.connect('mongodb+srv://AlexisDominguez:11399102a@my-free-cluster-ojd2d.mongodb.net/veterinaria?retryWrites=true&w=majority', {
   useNewUrlParser: true,
   useUnifiedTopology: true,
   useFindAndModify: false 
});

server.use(bodyParser.json());
server.use(bodyParser.urlencoded({extended: true}));

server.use('/', routes());

server.listen(4000, () => console.log("servidor funcionando"));

Примечание: username и пароль являются правильными значениями, только по соображениям безопасности.

Я хотел бы знать, почему это происходит. Cache Есть ли какой-нибудь кеш?

TESTS

Я использую Postman для тестирования сообщений. Когда я делаю первый пост, я получаю сообщение: El cliente se agregó correctamente, означающее, что клиент был успешно добавлен.

Но когда я пытаюсь добавить новый регистр в базу данных, я получаю то же сообщение, но когда я обновляю базу данных, чтобы увидеть новые изменения, я получаю новый регистр, но с теми же значениями первого сообщения .

РЕДАКТИРОВАТЬ

Добавлен server.use(bodyParser.json());, но все еще получены те же результаты.

1 Ответ

0 голосов
/ 22 марта 2020

Вы импортируете только папку маршрутов, но не index.js файл в вашем root файле index.js, поэтому импортируйте как

const routes = require('./routes/index');

Вы отправляете сообщение в JSON объекте, но вы не использовали; middleware в index.js, поэтому добавьте

server.use(bodyParser.JSON());

Ваши routes и controller могут быть объединены следующим образом: В вашем файле routes/index.js добавьте этот код:

const express = require('express');
const router = express.Router();
const Paciente = require('../models/Paciente');

router.post('/pacientes', async (req, res) => {
  const paciente = new Paciente(req.body);
  try {
     const saveData = await paciente.save();
     res.json({ message: "El cliente se agregó correctamente" });
     }
       catch ( err ) {
         res.json({ message: err }); 
       }
     });

 //You can view all the data from here
   router.get('/', async (req,res) => {
    const data  = await Paciente.find();
     try {
       res.json(data);
     }  catch( err ) {
         res.json({ message: err })
        }
     });
 module.exports = router;

Теперь вы можете удалить pacienteController.js файл

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...