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。更新数据库名称解决了我的问题。