Сохранить данные в MongoDB с помощью NodeJS - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь передать данные в коллекцию MongoDB, и она возвращает Cannot POST /courseweb/course/add

Перед передачей значений через axios Я пытался postman (расширение Google) отправить данные.

Это мой server.js, который реализован с помощью expressjs

const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const Bundler = require("parcel-bundler");
const cors = require("cors");
const mongoose = require("mongoose");

const InstructorDB = require('./public/DBModels/InstructorDB');

const router = express.Router();

const bundler = new Bundler("./src/index.html");

app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(bundler.middleware());
// app.use(express.static('./src'));

app.use("/courseweb", router);

mongoose.connect("mongodb://127.0.0.1:27017/courseweb", {
  useNewUrlParser: true
});
const connection = mongoose.connection;
connection.once("open", () => {
  console.log("Connected to MongoDB via 27017");
});

app.listen(3000, err => {
  if (err) {
    console.error(err);
    process.exit(-1);
  }
  console.log("Application is running on port 3000");
});

app.get("/", function(req, res) {
  res.sendFile("./dist/index.html");
});

router.route('/course/add').post((req, res) => {
  let instructorDB = new InstructorDB(req.body);
  instructorDB.save().then(bookDB => {
    res.status(200).send(`${bookDB} Added`);
  }).catch((err) => {
    res.status(400).send({message: err});
  });
});

router.route('/courses').get((req, res) => {
  // name of the course database model here
  InstructorDB.find().count(function(err, count){
    res.status(200).send(count);
});
});

А это мой InstructorDB.js, который является моделью схемы по mongoose

const mongoose= require('mongoose');
const Schema = mongoose.Schema;

let InstructorDB = new Schema({
    firstName: String,
    lastName: String,
    designation: String,
    faculty: String,   
    contactNumber: Number,
    email: String,
    password: String,
    isEnabaled: Boolean,
    courses: [{courseID: String}]
});

module.exports = mongoose.model('InstructorDB', InstructorDB, 'InstructorDB');

И это скриншот и ответ, который я получаю, когда передаю значения через postman.Я установил заголовок как content-type и application/json тоже

screenshot

Может кто-нибудь сказать мне, где я ошибся?

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Убедитесь, что вы отправили правильные данные через ваш почтовый запрос и измените глагол на post:

app.post('/course/add', (req, res) => {

  if(req.body == null){

    return res.status(400).send({message: 'bad request'});

  }

  let instructorDB = new InstructorDB(req.body);

  instructorDB.save((err ,doc ) => {
    if(err){
    res.status(400).send({message: err});

   }
    res.status(200).send(`Added`);
  });

});
0 голосов
/ 20 июня 2019

Вам не нужен маршрутизатор, если вы собираетесь поместить его в тот же файл.

попробуйте этот синтаксис вместо:

app.post('/coureweb/course/add',((req, res) => {
  let instructorDB = new InstructorDB(req.body);
  instructorDB.save().then(bookDB => {
    res.status(200).send(`${bookDB} Added`);
  }).catch((err) => {
    res.status(400).send({message: err});
  });
}));

затем вынимаем

app.use("/courseweb")

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