Nodejs невозможно опубликовать - PullRequest
1 голос
/ 21 апреля 2020

Я очень плохо знаком с программированием и изучаю учебное пособие.

Я застрял и не могу опубликовать новые записи с использованием кода и не могу найти то, что мне здесь не хватает. Мы будем благодарны за любую помощь.

Когда я пытаюсь опубликовать сообщение с помощью почтальона, я получаю ошибку проверки, а когда я пытаюсь получить значения, я получаю [].

Редактировать: Сообщение об ошибке: «msg»: «Ошибка: ValidationError: first_name: путь first_name требуется., Last_name: путь last_name требуется., Электронная почта: путь email требуется.» }

// importing modules

var express = require('express');
var mongoose = require('mongoose');
var bodyparser = require('body-parser');
var cors = require('cors');
var path = require('path');

var app = express();

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

//connect to mongoDB
mongoose.connect('mongodb://localhost:27017/contactlist');

//on connection
mongoose.connection.on('connected', () => {
  console.log('Connected to database mongoDB @ 27017');
});

//on error
mongoose.connection.on('error', (err) => {
  if (err) {
    console.log('Error in DB connection' + err);
  }
});

//port no
const port = 3000;

//adding middleware
app.use(cors());

//body - parser
app.use(bodyparser.json());

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

//routes
app.use('/api', route);

//testing server
app.get('/', (req, res) => {
  res.send('cutard');
});

app.listen(port, () => {
  console.log('Server started at port:' + port);
});

const express = require('express');
const router = express.Router();

const Contact = require('../models/contacts');


//retriving contact
router.get('/contacts', (req, res, next) => {
    Contact.find(function (err, contacts) {
        res.json(contacts);
    })
});


//add contact
router.post('/contacts', (req, res, next) => {
    console.log(req.body)
    let newContact = new Contact({
        first_name: req.body.first_name,
        last_name: req.body.last_name,
        email: req.body.email

    });

    newContact.save((err, Contact)=>{
        if (err) {
            res.json({ msg: ' Error: '+err});
        }
        else {
            res.json({ msg: 'Contact added successfully' });;
        }
    });
});

//delete contact
router.delete('/contact/:id', (req, res, next) => {
    Contact.remove({ _id: req.params.id }, function (err, result){
        if (err) {
            res.json(err);
        }
        else {
            res.json(result);
        }
    });
 });



module.exports = router;
const mongoose = require('mongoose');



const ContactSchema = mongoose.Schema({
    first_name: {
        type: String,
        required: true
    },
    last_name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    }
});

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

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

В вашем req.body явно нет значений.

Можете ли вы подтвердить, что ваше тело, которое вы отправляете в почтальоне, выглядит так?

{
    "first_name": "xxx",
    "last_name": "yyy",
    "email": "zzz"
}

Также очень важно иметь * Заголовок 1007 * установлен на application/json. Почтальон добавит его автоматически, если вы выберете JSON в качестве формата:

json

0 голосов
/ 21 апреля 2020

Проблема с установкой парсера тела.

npm link body-parser
...