MongoDB 图集:无法从 API 获取
MongoDB Atlas: Cannot GET from API
我开发了一个简单的 API 应该从 MongoDB Atlas 获取数据。不幸的是,如果我直接点击浏览器或使用 Postman,我会得到一个错误:
Cannot GET /api/rooms/getallrooms
server.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 中添加“/”,错误消失了,但我从 DB 得到的响应是空的:
{
"rooms": []
}
更新二:
确保模型和数据库中的列名称同步后,我得到的响应仍然是空的。
这里:
app.use('api/rooms', roomsRoute);
我认为您需要在路径前加上 /
前缀,如下所示:
app.use('/api/rooms', roomsRoute);
请参阅 path examples 的 Express 文档。
问题出在数据库 URL 上。默认情况下 MongoDB 给出“测试”数据库的 URL。更新数据库名称解决了我的问题。
我开发了一个简单的 API 应该从 MongoDB Atlas 获取数据。不幸的是,如果我直接点击浏览器或使用 Postman,我会得到一个错误:
Cannot GET /api/rooms/getallrooms
server.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 中添加“/”,错误消失了,但我从 DB 得到的响应是空的:
{
"rooms": []
}
更新二:
确保模型和数据库中的列名称同步后,我得到的响应仍然是空的。
这里:
app.use('api/rooms', roomsRoute);
我认为您需要在路径前加上 /
前缀,如下所示:
app.use('/api/rooms', roomsRoute);
请参阅 path examples 的 Express 文档。
问题出在数据库 URL 上。默认情况下 MongoDB 给出“测试”数据库的 URL。更新数据库名称解决了我的问题。