我正在将应用程序的后端连接到mongodb,当我对邮递员进行测试时,它返回一个空的主体-我不知道发生了什么。数据库已成功连接。
我已经编码了一个包含5个条目的模型,如下所示,并且还有app.js文件(也在下面)。我已将路由放入app.js文件中以使其更加清晰。我已经仔细检查过,并且已经导出了所有内容,但不知道出了什么问题。我已经以其他方式对其他React应用程序的后端进行了编码,邮递员一直工作得很好。
此外,我的邮递员设置将“ Content-Type”设置为application / json,其他所有内容均未选中。
app.js:
const express = require('express')
const mongoose = require('mongoose')
const cors = require('cors')
const bodyParser = require('body-parser')
const router = require('express').Router();
const DiaryEntry = require('./models/diaryEntry')
require('dotenv').config()
//App
const app = express()
//database
mongoose.connect(process.env.ATLAS_URI, {
useNewUrlParser: true,
}).then(() => console.log("Database Connected"))
//middlewares
app.use(bodyParser.json())
app.use(cors())
router.route("/").get((req, res) => {
DiaryEntry.find()
.then(diaryEntries => res.json(diaryEntries))
.catch(err => res.status(400).json('Error: ' + err));
});
const port = process.env.PORT || 5000 //default PORT
app.listen(port, () => {
console.log(`Server is running on port ${port}`)
})
模式(模型):
const mongoose = require('mongoose')
const diaryEntrySchema = new mongoose.Schema({
mood: {
type: Number,
required: true
},
date: {
type: Date,
required: false
},
entry1: {
type: String,
required: false,
trim: true
},
entry2: {
type: String,
required: false,
trim: true
},
entry3: {
type: String,
required: false,
trim: true
}
}, {timestamps: true}
);
const DiaryEntry = mongoose.model('DiaryEntry', diaryEntrySchema);
module.exports = DiaryEntry;
最后,将请求发布到json(获取请求也不起作用):
{
"mood": 8,
"entry1": "hey",
"entry2": "test",
"entry3": "whats up"
}
答案 0 :(得分:1)
根据猫鼬docs的`.find()接受一个arg,可以是一个空的obj,以查找集合中的所有条目。
例如:
MyModel.find({}).then(data => do something with data);
答案 1 :(得分:0)
使用此
DiaryEntry.find().exec() .then(diaryEntries => res.json(diaryEntries)) .catch(err => res.status(400).json('Error: ' + err)); });
在猫鼬中找到findfindOne方法后,您应该使用exec()