在这个问题中,我相信我的config.js,model.js和server.js文件是相关的。任何人都可以解释为什么这会在邮递员中返回一个代码为200的空数组?在我的mongo shell中,我可以访问并查看集合和文件。
这是我试图在server.js文件中进行的GET调用。响应应该是我导入的mongo db中的文件数组。
const {PORT, DATABASE_URL} = require('./config');
const {BlogPost} = require('./models');
app.get('/posts', (req, res) => {
BlogPost
.find()
.exec()
.then(posts => {
res.json({
posts: posts.map(
(post) => post.apiRepr())
});
})
.catch(
err => {
console.error(err);
res.status(500).json({message: 'Internal server error'});
});
});
创建和导出BlogPost模式并将其导出的模型文件是:
const blogPostSchema = mongoose.Schema({
title: {type: String, required: true},
content: {type: String, required: true},
author: {
firstName: {type: String, required: true},
lastName: {type: String, required: true}
}
});
blogPostSchema.virtual('authorString').get(function() {
return `${this.author.firstName} ${this.author.lastName}`.trim()});
blogPostSchema.methods.apiRepr = function() {
return {
id: this._id,
title: this.title,
author: this.authorString,
content: this.content
}
};
const BlogPost = mongoose.model('BlogPost', blogPostSchema);
module.exports = {BlogPost};
上面的const {PORT,DATABASE_URL}命令导入的配置文件是:
exports.DATABASE_URL = process.env.DATABASE_URL ||
global.DATABASE_URL ||
'mongodb://localhost/mongoose-blog';
exports.PORT = process.env.PORT || 8080;
最后,我在Postman上的输出(在放入GET localhost:8080 / post之后)和key:constant-type value:我的标题中的application / json是:
{
"posts": []
}
答案 0 :(得分:1)
问题在于这部分代码:
const BlogPost = mongoose.model('BlogPost', blogPostSchema);
module.exports = {BlogPost};
我在mongoose中的数据库被命名为BlogPost之外的其他东西,我曾尝试过,但是mongoose以复数和.toLowerCase()为集合而闻名。因此,如果我的收藏品是BlogPost,即使在幕后它会使用" blogposts"它也会有效。
答案 1 :(得分:0)
不应该是localhost:8080 /帖子?你的获取路线有/帖子和你说你的推杆/帖子。