[英]MongoDB Atlas: Cannot GET from API
我开发了一个简单的 API 应该从 MongoDB Atlas 获取数据。 不幸的是,如果我直接点击浏览器或使用 Postman,我会收到错误消息:
Cannot GET /api/rooms/getallrooms
服务器.js
const express = require('express');
const app = express();
const dbConfig = require('./db');
const roomsRoute = require('./routes/roomsRoute');
app.use('api/rooms', roomsRoute);
const port = process.env.PORT || 5001;
app.listen(port, () => {
console.log(`Server started on port ${port} :)`);
});
roomsRoute.js:
const express = require('express');
const router = express.Router();
const Room = require('../models/rooms');
router.get('/getallrooms', async (req, res) => {
try {
const rooms = await Room.find({});
return res.json({rooms});
} catch (error) {
return res.status(400).json({message: error});
}
});
module.exports = router;
rooms.js(包含房间模式):
const mongoose = require('mongoose');
const roomSchema = mongoose.Schema({
name : {
type: 'String',
required: true,
},
capacity : {
type: 'number',
required: true,
},
contact : {
type: 'number',
required: false,
},
type : {
type: 'String',
required: true,
},
imageURLs : [],
currentBookings : [],
description : {
type: 'String',
required: false,
},
rentPerDay : {
type: 'number',
required: true,
}
},{
timestamps: true,
});
const roomModel = mongoose.model('rooms', roomSchema);
module.exports = roomModel;
我的地图集如下所示:
我已通过网络访问确保允许所有 IP 连接 (0.0.0.0/0)。
这是我的第一个 API 所以我认为我缺少一些基本的东西。 任何人都可以帮我解决这个问题吗?
更新 1:通过在 app.use 中添加“/”,错误消失了,但我得到了来自数据库的空响应:
{
"rooms": []
}
在确保 model 和 DB 中的列名同步后,我得到的响应仍然是空的。
问题出在数据库 URL 上。 默认情况下 MongoDB 给出“测试”数据库的 URL。 更新数据库名称为我解决了这个问题。
这里:
app.use('api/rooms', roomsRoute);
我认为您需要在路径前加上/
,如下所示:
app.use('/api/rooms', roomsRoute);
有关路径示例,请参阅 Express 文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.