Express Post Request返回404状态

时间:2018-08-30 19:57:52

标签: node.js express mongoose

我正在使用express,mongoose和node.js创建一个API。我在为我的一个馆藏建立后期请求端点时遇到问题。我有一个使用猫鼬定义的付款模式,并在我的服务器文件中对该集合进行了过帐请求。我已经仔细检查了文件的路径,它们是正确的。我使用邮递员向API发送了类似的发帖请求:

{    类型:“ cdvdsvd” }

这给我一个错误404。请帮助

//Mongoose file

var mongoose = require('mongoose');

mongoose.Promise = global.Promise; 
mongoose.connect("mongodb://localhost:27017/CSapp", { useNewUrlParser: true });
module.exports = {
    mongoose
};

//Collection Schema

var {mongoose} = require('../db/mongoose'); 

var Payments = mongoose.model('Payments', {
    type: {
        type: String, 
        default: 'Incoming'
    }, 
    Date_Entry: {
        day: Number,
        month: String,
        year: Number
    }, Due_date: {
        day: Number,
        month: String,
        year: Number
    }, 
    Amount: {
        type: Number,
    }, 
    Party: {
        type: String,
    },
    Category: {
            type: String,
    }, 
    Description: {
        type: String,
    }
}); 

module.exports = {
    Payments
};

//Server file
const express = require('express'); 
const body_parser = require('body-parser');
const _ = require('lodash');

const {mongoose} = require('./db/mongoose'); 
const {Payments} = require('./models/payment');
const {Budgets} = require('./models/Budgets'); 

var port = 3000 || process.env; 
var app =  express();
app.use(body_parser.urlencoded({ extended: false }));

//POST REQUESTS
    //POST Payments
    app.post('/payments', (request, response) => {
        var payment = new Payments({
            type: request.body.type
        }); 

        payment.save().then((docs) => {
            response.send(docs);
            console.log(docs); 
        }, (e) => {
            response.status(404).send(e); 
        });
    }); 

    app.listen(port, () => {
        console.log('Server initiated. Now listening on port: ' + port);
    }); 

    module.exports = {
        app
    };  

2 个答案:

答案 0 :(得分:0)

根据Mongoose documentation,有两种方法可以查看Payment是否正确保存或过程中有错误。

它们是:

  
      
  1. 回调
  2.   

要使用回调,save()函数必须将回调作为参数,并且回调应采用两个参数,分别为errdocs。这样。

payment.save((err, docs) => {
   if (err) {
      return response.status(404).send(err);
   }
   response.send(docs);
   console.log(docs);
})
  
      
  1. 承诺
  2.   

使用诺言时,我们必须将then()函数链接到save()并捕获这样的错误。

    payment.save().then((docs) => {
        response.send(docs);
        console.log(docs); 
    }).catch((e) => response.status(404).send(e));

答案 1 :(得分:0)

  • 首先尝试console.log(err);,以尝试在if块下打印错误对象。
  • 然后像在此处使用save()一样在调用new函数之前通过打印数据对象来检查它。 如果这不能解决问题,请告知错误和数据对象包含哪些内容。
  • 如akrion所述,检查猫鼬文档是否更加清晰。