繁体   English   中英

Express Post Request返回404状态

[英]Express Post Request returns 404 status

我正在使用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 }; 

根据Mongoose文档 ,您可以通过两种方式查看Payment是否正确保存或过程中有错误。

他们是:

  1. 回呼

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

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

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

    payment.save().then((docs) => {
        response.send(docs);
        console.log(docs); 
    }).catch((e) => response.status(404).send(e));
  • 首先尝试console.log(err); 最好在if块下尝试打印err对象。
  • 然后,通过打印数据来检查您的数据对象,然后再调用save()函数,因为您在此处使用new关键字。 如果这不能解决问题,请告知错误和数据对象包含哪些内容。
  • 如akrion所述,请检查猫鼬文档是否更清晰。

暂无
暂无

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

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