【问题标题】:Axios post with params带有参数的 Axios 帖子
【发布时间】:2021-05-31 15:52:11
【问题描述】:

我的问题是我的 param articleid 没有传递给我的路由 /createAnswer。当我在这里记录我的 articleData._id 时,它是我将传递给我的路线 /createAnswer 的所需 id(例如 60b4f5d8c8be1d4cb0cdd6ca)。

const createAnswer = () => {
    axios.get('/getUserByFirebaseid', {
        params: {
            firebaseid: firebase.auth().currentUser.uid
        }
    })
    .then((response) => {
        const userData = response.data[0];
        console.log(articleData._id);
        axios({
            url: '/createAnswer',
            method: 'post',
            params: {
                articleid: articleData._id
            },
            data: {
                content: editorContent,
                creator: userData._id,
                voting: 0
            }
        }).then(() => {
            console.log("Answer successfully created");
        }).catch((error) => {
            console.error("Answer is not successfully created", error);
        })
    })
    .catch((error) => {
        console.error("Userdata are not loaded", error);
    })
}

但是当我在这里登录时,我的 articleid 是 undefined。

router.post('/createAnswer', (req, res) => {
    console.log("ArticleId: ", req.params.articleid);
    console.log("Answerdata: ", req.body);
    const answerData = req.body;
    const newAnswer = Answer(answerData);
    newAnswer.save((error) => {
        if (error) {
            res.status(500).json({ msg: "Internal server error" });
        } else {
            res.json({ msg: "Answer successfully write to MongoDB" });
        }
    });
});

我如何成为我的路线/createAnswer 中的 id?我也尝试记录 req.body.articleid 但结果相同(未定义)。我也通过stackoverflow在这里搜索了一个解决方案,但我没有找到适合我的解决方案。

感谢您的帮助。

【问题讨论】:

标签: javascript reactjs mongodb axios


【解决方案1】:

通过 simplecreators 链接,问题的解决方案是以下代码:

const createAnswer = () => {
    axios.get('/getUserByFirebaseid', {
        params: {
            firebaseid: firebase.auth().currentUser.uid
        }
    })
    .then((response) => {
        const userData = response.data[0];
        console.log(articleData._id);
        axios({
            url: `/createAnswer/${articleData._id}`,
            method: 'post',
            data: {
                content: editorContent,
                creator: userData._id,
                voting: 0
            }
        }).then(() => {
            console.log("Answer successfully created");
            //toArticle.push("/article");
        }).catch((error) => {
            console.error("Answer is not successfully created", error);
        })
    })
    .catch((error) => {
        console.error("Userdata are not loaded", error);
    })
}

articleData._id 在 /createAnswer 路由之后传递。

注意“不是”!

并在路由代码中将以下内容添加到路由 /createAnswer/:articleid。现在它会在日志中显示传递的 id。

router.post('/createAnswer/:articleid', (req, res) => {
    console.log("ArticleId: ", req.params.articleid);
    console.log("Answerdata: ", req.body);
    const answerData = req.body;
    const newAnswer = Answer(answerData);
    newAnswer.save((error) => {
        if (error) {
            res.status(500).json({ msg: "Internal server error" });
        } else {
            res.json({ msg: "Answer successfully write to MongoDB" });
        }
    });
});

【讨论】:

    猜你喜欢
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 2018-08-05
    • 2018-11-07
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    相关资源
    最近更新 更多