Node.js: POST не отправляет данные в базу данных - PullRequest
1 голос
/ 13 октября 2019

Я пытаюсь отправить данные, используя Почтальон . Я использую x-www-form-urlencoded для публикации данных в Local .

Ошибка не отображается.

После установкиданные о почтальоне, получая только следующие данные в базе данных:

{
    "createdAt": "2019-10-13T12:25:52.313Z",
    "updatedAt": "2019-10-13T12:25:52.313Z",
    "_id": "5da317e0e5a3df0a90308f68",
    "__v": 0
}

Не получить причину отказа от получения данных в базе данных. Любая помощь будет оценена.

маршруты:

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

router.post('/create', Contact.addNewContact );

контроллер:

const mongoose = require('mongoose');
const { ContactSchema } = require('../models/CrmModel');

const Contact = mongoose.model('Contact', ContactSchema, 'contact');

exports.addNewContact = async(req, res, next) => {
    try {
        let newContact = new Contact(req.body);
        let contact    = await newContact.save();

        res.send(contact);

    } catch (err) {
        res.status(500).json({ message: err.message });
    }

    next();
};

модель:

// Include MongoDB
const mongoose = require('mongoose');
// To Remove Deprication Warning from Console
mongoose.set('useNewUrlParser', true);
mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
mongoose.set('useUnifiedTopology', true);

//Define a Schema
const Schema = mongoose.Schema;

// Create Schema for The Current Model 
exports.ContactSchema = new Schema({
    firstName: {
        type : String
    },
    lastName: {
        type : String,
    },
    email: {
        type : String,
    },
    company: {
        type : String,
    },
    phone: {
        type : Number,
    },
    createdAt: {
        type    : Date,
        required: true,
        default : Date.now()
    },
    updatedAt: {
        type    : Date,
        required: true,
        default : Date.now()
    },
});

index.js:

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

const crmRoutes = require('./server/routes/crmRoutes');

const app = express();

app.get('/', (req, res, next) => {
    res.send('Hello from Node App!');
});

app.use('/api/contact', crmRoutes);

mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost:27017/crmdb', (err) => {
    if(!err) {
        console.log('MongoDB has connected successfully!');
    } else {
        console.log('The error: ' + err);
    }
});

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

app.listen(3000, (err) => {console.log("Server Has Started");});

module.export = app;

1 Ответ

1 голос
/ 13 октября 2019

Вы добавляете промежуточное ПО bodyParser после добавления своего маршрута. Это означает, что только маршруты, добавленные позже, будут иметь его. Вам нужно переместить маршрут после промежуточного программного обеспечения.

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