Запрос экспресс-почты возвращает статус 404 - PullRequest
0 голосов
/ 30 августа 2018

Я создаю API с использованием express, mongoose и node.js. У меня проблемы с созданием конечной точки после запроса для одной из моих коллекций. У меня есть схема оплаты, определенная с помощью mongoose, и я делаю запрос на публикацию этой коллекции в файле моего сервера. Я дважды проверил путь к файлам, и они верны. Я отправляю аналогичный почтовый запрос в 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 голосов
/ 30 августа 2018
  • Сначала попробуйте console.log(err);, чтобы попытаться напечатать объект err в блоке if.
  • Затем проверьте ваш объект данных, напечатав его перед вызовом функции save(), так как вы используете здесь ключевое слово new. если это не помогло, то расскажите, что содержалось в сообщении об ошибке и объектах данных.
  • Проверьте документацию Мангуста для большей ясности, как упоминал Акрион.
0 голосов
/ 30 августа 2018

Согласно документации Mongoose , есть два способа проверить, правильно ли сохранено Payment или произошла ошибка в процессе.

Это:

  1. Callbacks

Чтобы использовать обратный вызов, функция save() должна принимать обратный вызов в качестве параметра, а обратный вызов должен принимать два параметра: err и docs. Вот так.

payment.save((err, docs) => {
   if (err) {
      return response.status(404).send(err);
   }
   response.send(docs);
   console.log(docs);
})
  1. Обещания

При использовании обещания мы должны связать then() функцию с save() и перехватить ошибку следующим образом.

    payment.save().then((docs) => {
        response.send(docs);
        console.log(docs); 
    }).catch((e) => response.status(404).send(e));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...