200статус, но коллекция остается пустой - PullRequest
1 голос
/ 24 июня 2019

Я пытаюсь сделать несколько грубых операций на mongodb,

когда я избавляюсь от асинхронного ожидания, я получаю код 200, но на БД ничего не сохраняется, что, по-моему, нормально, с асинхронным кодом я получаю сообщение об ошибке «нет ответа от сервера» при проверке моих маршрутов на почтальоне.

/ routes.js

const router = require('express-promise-router')();
const appointmentController =require ('../controllers/appointments');


router.get('/list',appointmentController.list);
router.post('/add',appointmentController.add);


module.exports = router

/ controllers.js

const Appointment = require("../models/Appointment");

module.exports = {
    list: async (req, res) => {
    const appointment =  await Appointment.find();
    res.send({appointment});
     },
   add: async (req, res) => {
   const appointment = new Appointment(req.body);
   await appointment.save();
   return res.status(200).json('saved to the db !');

  },

 };

/ модель:

 const appointmentSchema = new Schema({
 Neurologist: {type: String, required: true},
 Remarks: String,
 Date: { type: Date, required: true },
 Hour: { type: Number, required: true },
 Type: {type: String, required: true}
});
 const Appointment = mongoose.model("appointment", appointmentSchema);

Я не вижу, что я делаю неправильно, я все еще новичок, любая помощь будет высоко ценится!

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Это должна быть ошибка в вашем mysql, которая не отображается, потому что вы не обрабатываете ошибку, замените сохранение на:

await appointment.save().catch(function(err){ console.log(err)}))

и посмотрите, что оно печатает.Вы также возвращаете «сохранено в БД», не проверяя, было ли сохранение успешным, и не сохраняя его в переменной

1 голос
/ 24 июня 2019

проблема была в том, что когда я впервые поставил: await assign.save (), это привело к превышению времени ожидания сервера. поэтому эта часть кода была ошибочной, что объясняет, почему, когда я избавился от асинхронности, я мог получить код 200, но ничего не пошло в базу данных. на самом деле req.body не было времени для отправки. Это та часть кода, которая должна быть асинхронной.

add: async (req, res) => {
const appointment =  await new Appointment(req.body);
appointment.save();
return res.status(200).json({message:'cool saved to the db !'});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...