首页 > 解决方案 > 为什么我收到“400:错误请求”但请求已成功发布到我的数据库

问题描述

我不确定发生了什么。我使用 localhost 在 dev 中设置了所有相同的代码,一切正常。我将我的应用程序托管到 Vercel,并将我的 API 托管到 heroku,据我所知,API 运行良好。现在的问题是,当我发出发布请求时,我在浏览器中收到 400 Bad Request 错误,但它仍然发出请求并发布到我设置的数据库。任何帮助都将不胜感激。我使用 NEXT.js 在 MERN 堆栈中构建了这个应用程序

这是我的客户端发布请求

const postSubmit = async e => {
        e.preventDefault();

        try {
            const { data } = await axios.post('/create-post', { content, image });
            
            if(data.error) {
                toast.error(data.error);
            } else {
                setPage(1);
                newsFeed();
                toast.success("Post created");
                setContent('');
                setImage({});
                // socket.emit('new-post', data);
            }
        } catch(e) {
            console.log(e);
        }
    }

这是我对发布请求的服务器端处理

export const createPost = async (req, res) => {
    const { content, image } = req.body;
    if(!content.length) {
        return res.json({
            error: 'Content is required'
        })
    }

    try {
        const post = new Post({ content, image, postedBy: req.user._id });
        await post.save();

        const postWithUser = await Post.findById(post._id).populate('postedBy', '-password -secret');

        res.json(postWithUser);
    } catch (e) {
        console.log(e);
        res.sendStatus(400);
    }
};

这是浏览器告诉我的

Chrome 浏览器信息

标签: node.jsreactjsmongodbmongoosenext.js

解决方案


这很可能是由 MongoDB 连接字符串 (URI) 上的拼写错误引起的,类似于此答案

在链接的答案中,错字是&w=majority;. 在您的情况下,该值为不知何故majorityDATABASE=,因此请仔细检查您的 MongoDB 连接字符串并尝试删除DATABASE=写入关注参数中的额外内容。


推荐阅读