繁体   English   中英

使用NodeJS将数据保存到MongoDB

[英]Save data to MongoDB using NodeJS

我试图将数据传递给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-typeapplication/json

屏幕截图

谁能告诉我我哪里出问题了?

如果要将路由器放入同一文件中,则不需要路由器。

尝试使用以下语法:

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")

确保通过发帖请求发送正确的数据,并将动词更改为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`);
  });

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM