首页 > 解决方案 > 即使在 MongoDB 中使用不同的输入值,Express 也会给出相同的响应

问题描述

我是新学习 Express 和 MongoDB。我正在学习 Udemy 课程,我确信我的代码完全一样。

我的问题:

当我将一些数据发布到 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();
   }
}

路线/index.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"));

注意:用户名密码是正确的值,只是出于安全原因受到指责。

我想知道为什么会这样。¿ 是否有某种缓存?

测试

我正在使用 Postman 进行帖子测试。当我做第一篇文章时,我收到消息:El cliente se agregó correctamente这意味着客户端已成功添加。

但是当我尝试向数据库添加一个新寄存器时,我得到了相同的消息,但是当我更新数据库以查看新的更改时,我得到了新的寄存器,但与第一个帖子的值相同。

编辑

添加server.use(bodyParser.json());但仍然得到相同的结果。

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


您只导入路由文件夹而不是index.js根文件中的文件 index.js,因此导入为

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

您正在JSON对象中发送消息但您没有使用middlewareindex.js所以添加

server.use(bodyParser.JSON());

您的routesandcontroller可以像这样合并:在您的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文件


推荐阅读