繁体   English   中英

MongoDB 图集:无法从 API 获取

[英]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": []
}

更新 2: 在此处输入图像描述

在确保 model 和 DB 中的列名同步后,我得到的响应仍然是空的。

问题出在数据库 URL 上。 默认情况下 MongoDB 给出“测试”数据库的 URL。 更新数据库名称为我解决了这个问题。

这里:

app.use('api/rooms', roomsRoute);

我认为您需要在路径前加上/ ,如下所示:

app.use('/api/rooms', roomsRoute);

有关路径示例,请参阅 Express 文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM