Req.body пуст по запросу поста в Nodejs (Angular 4, MongoDB) - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь сделать POST-запрос к MongoDB

Сначала я использую сервис в Angular

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders, HttpClientModule } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class RequestService {

  constructor(private http: HttpClient) { }

  postTask(task) {
    const headers = new HttpHeaders();
    headers.append('Content-Type', 'application/x-www-form-urlencoded');
    return this.http.post('http://localhost:3000/tasks', task, {
      headers: headers});
  }
}

И использую его в таком компоненте как:

 postData(data) {
    this.service.postTask(data).subscribe( (res) => {
      console.log(data);
    });
  }

Console.log дает мне строку.

Проблема в том, что когда я пытаюсь опубликовать данные, я не могу передать req.body, аргумент, который должен быть опубликован. console.log (req.body) возвращает {} для меня. Если я передам строку типа 'test3' (прямо сейчас в примере так), запрос будет опубликован.Как я могу передать аргумент (req.body)?

Вот как я могу опубликовать его в БД

const app = express();
//Middleware for CORS
app.use(cors());

// Parsers for POST data
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// Point static path to dist
app.use(express.static(path.join(__dirname, 'dist')));

  var todoSchema = new Schema({
    taskName: String,
    createdAt: Date,
    isDone: Boolean,
    prioraty: String
  }, {
    collection: 'tasks'
  });


var Model = mongoose.model('Model', todoSchema);
mongoose.connect('mongodb://localhost:27017/admin').then(() => {
  console.log("connected");
}).catch (() => {
  console.log("not connected");
});
mongoose.connection.once('open', function () {
  console.log('mongodb connected.');
});



//Save Task
app.post('/tasks',  function(req, res) {

  console.log("Here is req2", req.body);
  var savedata = new Model({
    'taskName': 'test3',
    'isDone': false,
    'createdAt': Date.now(),
    'prioraty': 'medium'
  }).save(function (err, result) {
    if (err) throw err;

    if (result) {
      res.json(result)
    }
  })
});

PS.В консоли полезная нагрузка здесь, поэтому она должна работать ..

enter image description here

...