javascript - 即使在 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());
但仍然得到相同的结果。
解决方案
您只导入路由文件夹而不是index.js
根文件中的文件 index.js
,因此导入为
const routes = require('./routes/index');
您正在JSON
对象中发送消息但您没有使用middleware
,index.js
所以添加
server.use(bodyParser.JSON());
您的routes
andcontroller
可以像这样合并:在您的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
文件
推荐阅读
- sql - SQL Server 中的 NTILE() 函数
- spring-boot - 如何在 Flux 上执行 flatMap() 时获取索引号
- git - git - 如何仅合并特定文件
- azure - 启用/禁用事件订阅
- php - MYSQL数据库搜索使用PHP显示结果
- javascript - 在 ^(?=.*[az]{2,}).{8,}$ 这个正则表达式中至少有 2 个小写字符。尽管 TeSt@12345 有 2 个小写字符,但它不起作用
- facebook - Facebook 令牌的 dataAccessExpirationDate 是否由 SDK 自动刷新?
- node.js - 如何在 mongo dB 中对数据进行分组/聚合以进行事件
- objective-c - 无法将“NSArray.Element”类型的值转换为预期参数
- java - 是否可以从 Spring Java 8 中的功能接口访问服务类方法?