首页 > 解决方案 > 快递应用程序未向 MongoDB 发送 POST 请求

问题描述

我正在使用 express 制作一个 CRUD api,并尝试通过 mongooseJS 连接到 MongoDB Atlas。问题是,每当我尝试发出 get 或 post 请求时,服务器都没有任何响应。服务器只是超时。

我在 MongoDB atlas 上创建了一个数据库,我的代码说它成功连接到数据库。

连接代码:

const db = require('mongoose');

db.connect(process.env.DB_QUERY, { // DB_QUERY is the connection query in .env file
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true
}, () => {
    console.log('Successfully connected to Mongo DB');
});

我正在使用的架构(存储在 Item.js 中):

const db = require('mongoose');

const ItemSchema = db.Schema({
    name: {
        type: String,
        required: true
    },
    price: Number,
    category: String,
    description: String,
    ratings: {
        type: Number,
        min: 0,
        max: 5,
        default: 0
    }
});

module.exports = db.model('Items', ItemSchema);

发布和获取路线:

const express = require('express');
const Item = require('../models/Item');

const router = express.Router();

router.get('/', async (req, res) => {
    const items = await Item.find();
    res.json(items);
});

router.post('/', async (req, res, next) => {
    try {
        const item = new Item(req.body);
        const dbItem = await item.save();
        res.json(item);
    } catch (error) {
        res.json(error);
    }
});

module.exports = router;

更新:我删除了数据库连接中的回调函数,现在它给了我一个身份验证失败。我已经交叉检查了多次,用户名、密码和数据库名称都是正确的。

我已经在 MongoDB Atlas 的网络访问中将 0.0.0.0/0 列入白名单

标签: node.jsmongodbexpressmongoosemiddleware

解决方案


没关系。我创建了一个新用户来访问数据库,现在它神奇地工作了


推荐阅读