Запрос сделан, но в MongoDB отображается только объект _id - PullRequest
0 голосов
/ 11 января 2020

пожалуйста, у меня есть контактная форма в моем html файле, как показано ниже;

<form action="/contact" method="post">
                    <input type="text" name="name" id="" placeholder="Name">
                    <input type="email" name="email" id="" placeholder="Your Email">
                    <textarea name="message" id="" cols="30" rows="10" placeholder="Your Message</textarea>
                    <button type="submit" id="form_btn">Submit</button>
                </form>

У меня есть контактный expressjs API, который я протестировал с Почтальоном и работает нормально, когда я отправляю запрос на публикацию ниже;

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

//GET BACK ALL THE POSTS
router.get('/', async (req, res) => {
    try{
        const contacts = await Contact.find();
            res.json(contacts);
    }   catch(err){
            res.json({message: err});
    }
});

//SUBMITS A CONTACT INFORMATION
router.post('/', async (req, res) => {
    const contact = new Contact({
        name: req.body.name,
        email: req.body.email,
        message: req.body.message,
    });
    try{
    const savedContact = await contact.save()
    res.json(savedContact);
    }catch(err){
        res.json({message: err});
    }
});

module.exports = router;

У меня также есть этот код на моем сервере;

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const cors = require('cors');
const path = require('path');
const app = express();

// Middlewares
require('dotenv/config');
app.use(bodyParser.json());
app.use(cors());

// Import routes
const contactRoute = require('./contact');
app.use('/contact', contactRoute);

// Serving static folder
app.use(express.static(path.join(__dirname, '../public'))); 

// Connect to DB
mongoose.connect( 
    process.env.DB_CONNECTION, 
    {  useNewUrlParser: true ,
       useUnifiedTopology: true, 
    },
    () => console.log('Connected to DB')
);

const port = process.env.PORT || 9900;
app.listen(port, () => console.log(`server started on port ${port}`));

Проблема в том, что, если я нажимаю внизу, чтобы сделать запрос на публикацию, запрос на публикацию сделано, но только объект _id показан в моей базе данных MongoDB как;


{"_id": "5e19d5e39134760ad4b2e9e1", "__v": 0}


Его настолько странно, что имя, электронная почта и сообщение не включены, значит, когда я делаю запрос на публикацию от Почтальона, все поля отображаются как;


{"_id": "5e16f824b1074516901951d7", "name": "Kwame Asare Boahen", "email": "Kwame@gamil.com", "message": "Здравствуйте, прошло довольно много времени", "__v": 0}


Пожалуйста Пожилые люди, что вызывает это? Я пробовал другие способы исправить это, но у меня не работает.

1 Ответ

0 голосов
/ 11 января 2020

Он работает с почтальоном, потому что вы отправляете json, но с формой, которую вы отправляете закодированные данные, поэтому вам просто нужно еще одно промежуточное ПО

app.use(bodyParser.urlencoded({ extended: false }))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...