我正在使用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
};
答案 0 :(得分:0)
根据Mongoose documentation,有两种方法可以查看Payment
是否正确保存或过程中有错误。
它们是:
- 回调
要使用回调,save()
函数必须将回调作为参数,并且回调应采用两个参数,分别为err
和docs
。这样。
payment.save((err, docs) => {
if (err) {
return response.status(404).send(err);
}
response.send(docs);
console.log(docs);
})
- 承诺
使用诺言时,我们必须将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
函数之前通过打印数据对象来检查它。
如果这不能解决问题,请告知错误和数据对象包含哪些内容。